繁体   English   中英

如何合并两个数据框并有条件地合并一列

[英]How do you merge two dataframes and conditionally merge one column

除了一列之外,我有 2 个相同的数据框。 我希望将两者合并在一起并有条件地接受该列的值。 在这种情况下,我正在寻找两者中的最大值,但通常任何条件都是理想的。

import pandas as pd

df1 = pd.DataFrame([['Tom', 30], ['Jane', 40], ['Barry', 22], ['Kelly', 15]])
df2 = pd.DataFrame([['Tom', 10], ['Jane', 50], ['Barry', 22]])

df1:

       0   1
0    Tom  30
1   Jane  40
2  Barry  22
3  Kelly  15

df2

       0   1
0    Tom  10
1   Jane  50
2  Barry  22

我希望最终得到一个将两者合并并取第 1 列最大值的数据框。

例子:

       0   1
0    Tom  30
1   Jane  50
2  Barry  22
3  Kelly  15

在分组以获得max之前,合并数据,将how设置为outer

df1.merge(df2, how='outer').groupby(0, as_index = False, sort=False).max()

       0   1
0    Tom  30
1   Jane  50
2  Barry  22
3  Kelly  15

另一种方式; append、sort_values 和 drop_duplicates。 下面的代码

df2.append(df1).sort_values(by=['0',"1"],ascending = (False, True)).drop_duplicates(subset=['0'],keep='last')

      0   1
0    Tom  30
3  Kelly  15
1   Jane  50
2  Barry  22

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM