You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分DataFrame中列表列并保留其余列数据?

解决DataFrame拆分列表列并保留其他列的问题

你碰到的问题很常见——直接对单列用apply(pd.Series)确实只会返回拆分后的列,自然就丢了A、B列。其实只需要把拆分后的结果和原DataFrame的其他列合并就可以了,下面给你两种简单的实现方式:

方法一:用pd.concat合并列

先拆分C列得到新的列,再和原数据的A、B列横向拼接:

import pandas as pd

# 你的示例数据
df = pd.DataFrame({
    'A': [1, 2],
    'B': ['Row1', 'Row2'],
    'C': [['rowa','rowb','rowc'], ['rowd','rowg','rowf']]
})

# 拆分C列为多列
split_c = df['C'].apply(pd.Series)
# 给拆分后的列重命名(可选,但更清晰)
split_c.columns = [f'C_{col}' for col in split_c.columns]

# 合并原DataFrame的A、B列和拆分后的列
result_df = pd.concat([df[['A', 'B']], split_c], axis=1)
print(result_df)

输出结果:

A     B    C_0    C_1    C_2
0  1  Row1  rowa  rowb  rowc
1  2  Row2  rowd  rowg  rowf

方法二:用join一步完成

join方法可以直接把拆分后的列附加到原DataFrame上,写法更简洁:

result_df = df.join(df['C'].apply(pd.Series).rename(columns=lambda x: f'C_{x}'))

这个方法和上面的结果完全一致,省去了单独合并的步骤。

关键说明

  • 为什么原来的代码会丢列?因为df['C'].apply(pd.Series)只针对C列操作,返回的是仅包含拆分后列的新DataFrame,没有关联原数据的其他列。
  • 如果你的列表长度不一致,拆分后会自动用NaN填充缺失的位置,这点需要注意。

内容的提问来源于stack exchange,提问作者Julia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:48:09