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

时间:2021-05-11 19:35:34

标签: python pandas dataframe

除了一列之外,我有 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

2 个答案:

答案 0 :(得分:1)

合并数据,将 how 设置为 outer,然后分组以获得 max

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

答案 1 :(得分:1)

另一种方式;追加、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
相关问题