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

如何将含列表的单列Series拆分为多列并追加至原DataFrame

把列表型Series拆分为多列并追加回原DataFrame

嘿,这个场景我之前处理过好几次,其实用Pandas的内置方法就能轻松搞定,完全不用写复杂的循环逻辑。我给你拆解成几个简单步骤:

1. 快速拆分Series为新DataFrame

你的Series里每个元素都是长度固定的列表(这里是2个元素),直接把Series转成列表后传给pd.DataFrame(),就能自动把列表里的元素拆成单独的列,还能保留原索引避免乱序:

# 假设你从df中取出的Series是s
split_cols = pd.DataFrame(s.tolist(), index=s.index)

2. 给新列起个清晰的名字(可选但很推荐)

为了后续方便识别,最好给拆分后的列起和原列相关的名字,比如原列叫location,就可以命名为location_lon和location_lat:

# col是你原来取出Series的列名(比如循环里的col变量)
split_cols.columns = [f"{col}_lon", f"{col}_lat"]

3. 合并回原DataFrame

用pd.concat()把原DataFrame和拆分后的列按列方向拼接就行,axis=1表示按列合并:

df = pd.concat([df, split_cols], axis=1)

完整的循环版本代码

结合你原来的循环逻辑,完整代码可以写成这样:

import pandas as pd

# 假设df是你的原始DataFrame
for col in df.columns:
    s = df[col]
    # 拆分列表型Series为两列
    split_cols = pd.DataFrame(s.tolist(), index=s.index)
    split_cols.columns = [f"{col}_col1", f"{col}_col2"]  # 自定义列名
    # 追加回原DataFrame
    df = pd.concat([df, split_cols], axis=1)

额外小技巧:处理可能的异常情况

如果你的Series里有长度不固定的列表(比如有的是2个元素,有的是空列表),可以用Pandas的str索引来提取元素,这种方法更鲁棒:

# 直接给原df新增两列
df[f"{col}_col1"] = s.str[0]
df[f"{col}_col2"] = s.str[1]

这种方式下,长度不足的列表会返回NaN,方便后续处理异常值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:22:27