首页 > 解决方案 > 列表的 DataFrame 列和 NaN 到 String

问题描述

我尝试将列表的 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

标签: pythonpandasdataframe

解决方案


使用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']]

推荐阅读