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