当我使用pandas.merge
时,有一个奇怪的输出,我无法理解调用merge()
后输出列的真实的规则。
源代码(pandas是v1.5.2):
import pandas as pd
import numpy as np
s1 = pd.Series([100, 200, 300], index=[4,5,6], name="A")
df2 = pd.DataFrame([[100,1,1,1],[200,2,2,2],[300,3,3,3]], index=[4,5,6],columns=list("ABCD"))
df3 = pd.merge(
s1,
df2,
suffixes=("_left", "_right"),
how="left",
left_index=True,
right_on="A",
)
print(df3)
输出为:
See the image
A A_left A_right B C D
NaN 4 100 NaN NaN NaN NaN
NaN 5 200 NaN NaN NaN NaN
NaN 6 300 NaN NaN NaN NaN
那么问题来了,为什么第二列(标记为A
)的值是输入序列的索引,而A
被转换为列,而不是索引?
还有,谁能更详细地给予一下合并API的输出列的规则?
我读了docs,但它有点简短。
1条答案
按热度按时间yrefmtwq1#
我想你误解了
Series
的名字:在代码中,您尝试查找
s1
的索引(没有名称)和df2
的'A'列之间的关系。所以你尝试将[4,5,6]与[100,200,300]匹配,这是没有意义的。然而,你应该做的是:
如果你想通过索引连接,你必须用途: