将Pandas中含不同长度列表的列拆分为多列
将Pandas中含不同长度列表的列拆分为多列
嗨,我来帮你搞定这个问题!针对DataFrame里包含不同长度列表的列拆分需求,其实用Pandas的内置方法就能轻松解决,完全适配你这种列表长度不固定的场景~
首先,先还原你的示例数据方便测试:
import pandas as pd df = pd.DataFrame({ 'ID': [1, 2, 3], 'result': [[.1,.5], [.4,-.2,-.3,.1,0], [0,.1,.6]] })
接下来是核心操作,分三步就能实现你要的效果:
- 把
result列的列表数据转换成一个独立的DataFrame,Pandas会自动给短列表的空缺位置填充NaN - 给新生成的列重命名成
result_1、result_2这种格式 - 把这个拆分后的DataFrame和原数据的
ID列拼接起来
具体代码如下:
# 把列表列转为独立DataFrame,自动补全NaN split_columns = pd.DataFrame(df['result'].tolist()) # 重命名列名 split_columns.columns = [f'result_{col+1}' for col in split_columns.columns] # 拼接得到最终结果 final_df = pd.concat([df['ID'], split_columns], axis=1)
运行后你就能得到想要的结果:
ID result_1 result_2 result_3 result_4 result_5 0 1 0.1 0.5 NaN NaN NaN 1 2 0.4 -0.2 -0.3 0.1 0.0 2 3 0.0 0.1 0.6 NaN NaN
如果你喜欢更简洁的写法,也可以把这几步合并成一行代码:
final_df = df['ID'].to_frame().join( pd.DataFrame(df['result'].tolist()).rename(columns=lambda x: f'result_{x+1}') )
这个方法的核心是利用pd.DataFrame()处理不规则长度列表的特性,自动用NaN补全空缺,完全不需要担心列表长度不一致的问题~
备注:内容来源于stack exchange,提问作者Ishigami
相关产品推荐
相关产品推荐

