在 Pandas 中合并数据框(没有列名)

Posted

技术标签:

【中文标题】在 Pandas 中合并数据框(没有列名)【英文标题】:Merge Dataframes in Pandas (without column names) 【发布时间】:2018-09-28 08:40:48 【问题描述】:

这个问题与Using Merge on a column and Index in Pandas 密切相关,但我在一些不同的地方进行了编辑。

我有两个数据框,第二个的索引与另一个的第一列完全相同。两个数据框都只有一列(和索引),并且该列没有名称。

我想沿着 DF1 的列和 DF2 的索引之间匹配的值连接两个数据框,并维护 DF1 的索引。

DF1=

A Z

乙是

C X

DF2 =

Z 2000

Y 2300

X 1300

U 900

一种可能的解决方案可能是:

merged = pd.merge(DF1, DF2, left_index=True, right_on=??)

但是我会用什么来引用 DF2 中的列?

另外,将 DF 设置为系列会有什么不同吗?

【问题讨论】:

嗨@jezrael 这个q可以打开吗? 如果columns没有名字就代表是series,所以需要DF2 = DF2.to_frame('col') 我已经有 DF1 和 DF2 作为数据帧,我可以在 "right_on=" 参数中按数字引用 DF2 的第 1 列吗? 不,不可能。 如果 DF1 和 DF2 最初设置为具有 1 列的数据框,是否将它们设置为 Series 以启用合并? 【参考方案1】:

如果使用Series

DF1 = pd.Series('C': 'X', 'A': 'Z', 'B': 'Y', 'D': 'U')
DF2 = pd.Series('U': 900, 'X': 1300, 'Y': 2300, 'Z': 2000)
print (DF1)
A    Z
B    Y
C    X
D    U
dtype: object

print (DF2)
U     900
X    1300
Y    2300
Z    2000
dtype: int64

merged = DF1.to_frame('A').join(DF2.rename('B'), on='A')
print (merged)
   A     B
A  Z  2000
B  Y  2300
C  X  1300
D  U   900

【讨论】:

以上是关于在 Pandas 中合并数据框(没有列名)的主要内容,如果未能解决你的问题,请参考以下文章

使用新列名迭代合并 pandas 列

Python Pandas:将数据框的列与列名合并为一列

pandas 列选择因合并 Excel 列中的元组列名而失败

合并两个具有相同列名但在熊猫中列数不同的数据框

如何切片具有特定列名+列范围的数据框?

将具有重叠列名的 Pandas 加入多个数据框?