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

如何将Pandas DataFrame列中的列表对应转换为宽表结构

Pandas DataFrame 列表列转宽表解决方案

这里提供两种高效的实现方式,满足你将列表对应列转换为宽表的需求:

方法一:逐行生成Series拼接

利用apply逐行处理类别和数值列表,将类别设为索引、数值设为值生成Series,再与原column1拼接:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'column1': ['text', 'text2'],
    'column2': [['cat1', 'cat2', 'cat3'], ['cat2', 'cat3', 'cat1']],
    'column3': [[1,2,3], [4,5,6]]
})

# 处理每行的类别与数值映射
cat_value_series = df.apply(lambda row: pd.Series(row['column3'], index=row['column2']), axis=1)

# 合并得到结果
result_df = pd.concat([df['column1'], cat_value_series], axis=1)
print(result_df)

方法二:展开后透视重组

先将列表列展开为行,再通过透视表重新组织成目标结构:

import pandas as pd

df = pd.DataFrame({
    'column1': ['text', 'text2'],
    'column2': [['cat1', 'cat2', 'cat3'], ['cat2', 'cat3', 'cat1']],
    'column3': [[1,2,3], [4,5,6]]
})

# 同时展开类别和数值列
exploded_df = df.explode(['column2', 'column3'])

# 透视转换为宽表
result_df = exploded_df.pivot(
    index='column1',
    columns='column2',
    values='column3'
).reset_index()
result_df.columns.name = None  # 清除列索引的名称标签

print(result_df)

两种方法均可得到你需要的输出结构:

column1 cat1 cat2 cat3
0    text    1    2    3
1   text2    6    4    5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:35:22