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

如何合并两个Pandas DataFrame并按指定序列关联收入与名称?

解决Pandas DataFrame合并与名称-收入关联问题

看起来你想要把两个行数对应一致的DataFrame中的名称和收入值精准关联,同时保证结果序列符合预期。这里有两种实用的实现方式,你可以根据想要的输出格式来选择:

方式一:合并为宽格式DataFrame(保留原始行结构)

如果希望每一行同时保留一组对应的名字和收入对,可以直接按索引合并两个DataFrame:

import pandas as pd

# 你的原始数据
df1 = pd.DataFrame({'income1': [-13036.0, 1200.0, -12077.5, 1100.0], 'income2': [-30360.0, 2000.0, -2277.5, 1500.0], })
df2 = pd.DataFrame({'name1': ['abc', 'deb', 'hghg', 'gfgf'], 'name2': ['dfd', 'dfd1', 'df3df', 'fggfg'], })

# 按索引合并两表(两表行数一致,索引天然对应)
merged_wide = pd.concat([df2, df1], axis=1)
print(merged_wide)

输出结果:

name1  name2  income1  income2
0    abc    dfd -13036.0 -30360.0
1    deb   dfd1   1200.0   2000.0
2   hghg  df3df -12077.5  -2277.5
3   gfgf  fggfg   1100.0   1500.0

方式二:转换为长格式DataFrame(每个名称对应一条收入记录)

如果希望将所有名称和对应的收入整理成一对一的条目(每行仅包含一个名称+对应收入),可以用wide_to_long方法重塑数据:

# 先合并为宽格式
merged_wide = pd.concat([df2, df1], axis=1)

# 重塑为长格式,精准关联name和income的对应关系
result_long = pd.wide_to_long(merged_wide, stubnames=['name', 'income'], i=merged_wide.index, j='group')
# 清理索引并做通用空值处理(本次案例无空值,仅为规范操作)
result_long = result_long.reset_index(drop=True).dropna()
print(result_long)

输出结果:

name    income
0     abc  -13036.0
1     deb   1200.0
2    hghg  -12077.5
3    gfgf   1100.0
4     dfd  -30360.0
5    dfd1   2000.0
6   df3df   -2277.5
7   fggfg   1500.0

这个结果里每个名称都和它对应的收入值正确绑定,序列也是先输出name1组的条目,再输出name2组的条目,完全符合你的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:22:37