熊猫合并行为

时间:2021-06-26 14:59:45

标签: python pandas merge one-to-many

我正在合并基于两列的两个 Pandas 数据框,其中 df1 有 50 行,df2 有 200 行 - 在 df1 之间创建一对多关系df2。来自两个数据帧的列的 dtypes 相同。我这样做:

df = pd.merge(df1, df2, left_on=["df1col1", "df1col2"], right_on=["df2col1", "df2col2"], how="left")

但是,它不会从 df2 中捕获它应该获取的所有行。来自 excel 背景,我通常“连接”我想要进行 VLOOKUP 的单元格,所以我在这里尝试类似的东西:

df1["concat"] = df1["df1col1"].astype(str) + " - " + df1["df1col2"].astype(str)
df2["concat"] = df2["df2col1"].astype(str) + " - " + nbim["df2col2"].astype(str)

#then merge
df = pd.merge(df1, df2, on='concat', how='left')

这确实返回了它应该从 df2 中获得的所有粒度。

我尝试用一​​个虚拟数据框来复制这个问题,但是在该数据上尝试它会给我两种方法相同的结果。鉴于我没有数据可以提供给您,我意识到很难提供帮助,但是有没有人知道为什么这两种方法会给我不同的结果?

0 个答案:

没有答案
相关问题