[英]How do you merge two Pandas dataframes with different column index levels?
[英]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.