Pandas 2.1中拆分含列表列的推荐方法咨询
Pandas 2.1中拆分含列表列的推荐方法咨询
嗨,我刚好也关注到Pandas 2.1这个更新带来的变化,来给你说说现在推荐的正确姿势~
你之前用的 df['column_with_lists'].apply(pd.Series) 这种拆分列表列的方式,在Pandas 2.1版本开始触发FutureWarning,官方明确说后续版本会移除这个用法,主要是因为它的执行效率和代码可读性都有优化空间。
现在官方更推荐的是两种更直接的方法:
方法一:直接用pd.DataFrame构造(首推)
把存储列表的列转成Python列表后,直接传入pd.DataFrame来生成拆分后的列,这是最高效且直观的方式:
# 生成拆分后的列DataFrame split_df = pd.DataFrame(df['column_with_lists'].tolist(), index=df.index) # 和原DataFrame合并(按需操作) result_df = pd.concat([df, split_df], axis=1)
方法二:借助str方法扩展(适合特定场景)
如果你的列表元素是字符串类型,或者可以临时拼接成字符串再拆分,也可以用str.join配合str.split(expand=True)来实现:
split_df = df['column_with_lists'].str.join('|').str.split('|', expand=True)
不过这种方法需要额外的字符串拼接拆分操作,效率不如第一种,更推荐第一种方法。
需要注意的是,这两种方法和你之前的老方法行为一致:如果列中的列表长度不一致,缺失的位置会自动用NaN填充。
举个实际例子验证下:
import pandas as pd df = pd.DataFrame({'column_with_lists': [[1,2,3], [4,5], [6]]}) split_df = pd.DataFrame(df['column_with_lists'].tolist(), index=df.index) print(split_df)
输出结果:
0 1 2 0 1 2.0 3.0 1 4 5.0 NaN 2 6 NaN NaN
完全符合预期,而且不会触发任何警告~
备注:内容来源于stack exchange,提问作者mrgou
相关产品推荐
相关产品推荐

