列表的DataFrame列和NaN到字符串

2024-06-16 09:40:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试将列表的DataFrame列转换为字符串。该列包含一组列表和NaN值

表:

id  col_list 
1   ['Lorem ipsum dolor sit amet', 'Donec non sem convallis', 'vulputate odio']
2   NaN
3   ['Mauris diam purus',  'luctus in rutrum venenatis', 'eros in luctus lobortis']
4   ['Lorem ipsum dolor sit amet']

输出:

id  col_list 
1   'Lorem ipsum dolor sit amet, Donec non sem convallis, vulputate odio'
2   NaN
3   'Mauris diam purus, luctus in rutrum venenatis, eros in luctus lobortis
4   'Lorem ipsum dolor sit amet'

下面的方法抛出此错误消息

 df['col_list'] = [','.join(elems) for elems in df['col_list']]

TypeError: can only join an iterable

Tags: inid列表colnanlistnonipsum
2条回答

使用apply

mask = ~df['col_list'].isna()
df.loc[mask , 'col_list'] = df.loc[mask, 'col_list'].apply(lambda x: ', '.join(x))
#or
df.loc[mask, 'col_list'] = [','.join(elems) for elems in df.loc[mask, 'col_list']]

使用dropnaagg.join筛选NaN并分配回:

df['col_list'] = df.col_list.dropna().agg(', '.join)

Out[205]:
   id                                                                col_list
0   1     Lorem ipsum dolor sit amet, Donec non sem convallis, vulputate odio
1   2                                                                     NaN
2   3  Mauris diam purus, luctus in rutrum venenatis, eros in luctus lobortis
3   4                                              Lorem ipsum dolor sit amet

相关问题 更多 >