部分行含Null值时如何扁平化DataFrame的列表类型列
问题解决方案
方法1:修改自定义函数解决NaN报错
报错的核心原因是列中的NaN为float类型,无法直接迭代,在函数中增加类型判断即可:
import numpy as np def func(lst): # 仅对列表类型做拼接,非列表(含NaN)可返回空字符串或保留NaN if isinstance(lst, list): return ", ".join(map(str, lst)) # 若需要保留空值,可替换为 return np.nan return "" # 注意示例数据中列名为list,根据实际列名调整 df["flattened"] = df["list"].apply(func)
方法2:更优的Pandas原生实现(推荐)
使用Pandas内置的str.join方法,无需自定义函数,执行效率更高,且会自动处理NaN值:
# 自动跳过NaN,对应NaN行返回空值 df["flattened"] = df["list"].str.join(", ") # 若需要把NaN对应的位置替换为空字符串,可追加fillna df["flattened"] = df["list"].str.join(", ").fillna("")
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

