gpt4 book ai didi

python - Pandas 合并 : merge two dataframes on same column but keep different columns

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:38 25 4
gpt4 key购买 nike

我有两个 pandas 数据框,它们共享一个公共(public)列名。我想合并公共(public)列名,但保留第二个 dataFrame 中公共(public)列名匹配的所有不同列。这是两个数据帧的示例:

DF1:
A B C D E F G H
value value value value value value value value
value value value value value value value value
value value value value value value value value
etc.


DF2:
A I J K L
value value value value value
value value value value value
value value value value value

我希望的预期结果是:

Result:

A B C D E F G H I J K L
value value value value value value value value value value value value
value value value value value value value value value value value value
value value value value value value value value value value value value

也就是说,在“A”列上有匹配项的情况下,我希望保留 I、J、K、L 的行并且不等于“NaN”,对于 DF1 中的列也是如此。

我已经尝试了所有 pd.merge 选项,但它们似乎没有按照我上面的要求进行操作。例如,

pd.merge(DF1, DF2, on='A', how='left') 

匹配 'A' 并将所有键保留在左侧,但不是来自第二个数据帧。我知道这是它应该做的,但这不是我想要的。类似地,how='right' 的作用相同,但会保留右侧的所有键,并用“NaNs”填充左侧的所有键。 “外部”似乎也没有做我想做的事情,因为它只是将所有内容粘在一起并用 NaN 填充所有不相似的列。

另请注意,DF1 和 DF2 的索引顺序不同。

任何人都可以为我提供一条前进的道路吗?谢谢!

最佳答案

如果你有

设置

z=io.StringIO("""    A      B      C     D     E      F      G     H
value2 value2 value2 value2 value2 value2 value2 value2
value3 value3 value3 value3 value3 value3 value3 value3
value value value value value value value value""")

df = pd.read_table(z, delim_whitespace=True)

z2=io.StringIO(""" A I J K L
value value value value value
value2 value2 value2 value2 value2
value3 value3 value3 value3 value3""")

df2=pd.read_table(z2,delim_whitespace=True)

然后

pd.merge(df,df2, on="A",right_index=True, left_index=True)


A B C D E F G H I J K L
0 value value value value value value value value value value value value
1 value value value value value value value value value value value value
2 value value value value value value value value value value value value

要按照您描述的方式匹配索引,

pd.merge(df.set_index("A"),df2.set_index("A"), right_index=True, left_index=True).reset_index()

A B C D E F G H I J K L
0 value2 value2 value2 value2 value2 value2 value2 value2 value2 value2 value2 value2
1 value3 value3 value3 value3 value3 value3 value3 value3 value3 value3 value3 value3
2 value value value value value value value value value value value value

关于python - Pandas 合并 : merge two dataframes on same column but keep different columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51128830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com