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

如何将Pandas中的DataFrame从df1格式转换为df2格式?

解决方法

要实现从df1到df2的转换,核心是把前两列的空格分隔字符串拆分成独立行,同时让年份列对应重复。这里有个简洁的实现方式:

首先给df1补全列名(你初始化时未指定列名,先补上方便后续操作),然后拆分字符串为列表,再用explode方法同时展开两列,最后调整数据类型和列名即可:

import pandas as pd

df1 = pd.DataFrame([['a b c', '1 2 3', 2011], ['d e f', '4 5 6', 2012]])
# 设置列名
df1.columns = ['col1', 'col2', 'year']

# 将前两列的空格分隔字符串拆分为列表
df1['col1'] = df1['col1'].str.split()
df1['col2'] = df1['col2'].str.split()

# 同时展开两列并重置索引
df2 = df1.explode(['col1', 'col2']).reset_index(drop=True)

# 将第二列转为整数类型
df2['col2'] = df2['col2'].astype(int)

# 重命名列到目标格式
df2.columns = ['a', 'b', 'c']

print(df2)

运行后会得到目标df2结构:

a  b     c
0  a  1  2011
1  b  2  2011
2  c  3  2011
3  d  4  2012
4  e  5  2012
5  f  6  2012

补充说明

  • str.split()默认按空格拆分字符串,返回列表格式的列值;
  • explode(['col1', 'col2'])会把每行的列表元素拆成独立行,且保证两列的元素一一对应;
  • 最后转换类型是因为拆分后的第二列是字符串格式,需要转为整数匹配df2的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:18:14