【发布时间】:2020-01-01 21:02:45
【问题描述】:
我有两个共享相同键的熊猫数据框,但每个对象的名称不同。
df = pd.DataFrame({"ID":[1,2,3], "Flag":[0,0,1]})
results = pd.DataFrame({"client_id":[1,2,3], "score":[600,700,800]})
df.columns
Index(['ID', 'Flag'])
results.columns
Index(['client_id', 'score'])
我想将它们合并在一起以将results["score"] 添加到df。我尝试了以下方法:
df = pandas.merge(df, results, left_on="ID", right_on="client_id", how="left")
这很好用,但df 现在有四列:["ID","Flag","client_id","score"]。
我只是一头雾水。为什么 merge 会返回第二个数据框的密钥,即使我告诉它 df["ID"] 和 results["client_id"] 是合并的密钥?
预期的结果是:
df.columns
Index(['ID', 'Flag', 'score'])
我使用过的其他 merge 函数不这样做,所以我只是想知道为什么 pandas 这样做。这是否有特定原因(即保留第二个数据框的密钥是否有用?)?
主要问题是:merge 中是否有一个参数可以用来避免这种情况,还是我必须手动排除 df["client_id"]?
【问题讨论】:
-
我在调用
x/y problem:请解释为什么您坚持让merge为您执行整个操作。由于您似乎设置了限制,您只是在抱怨merge没有按照您想要的方式编写。如果是这种情况,则说明您发布到了错误的网站。 -
我用过的其他合并函数不这样做(例如,
R中的merge函数)。因此,我正在寻找一种解决方案,以避免编写我不必用另一种语言编写的东西。