Python 合并数据帧,使两者都有值的值平均
我有两个数据帧Python 合并数据帧,使两者都有值的值平均,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧 print(df1) key value 0 A 2 1 B 3 2 C 2 3 D 3 print(df2) key value 0 B 3 1 D 1 2 E 1 3 F 3 我想要的是它在键上做一个外部合并,然后选择哪个值不是NaN。 如果两者都是int(或float),它选择哪一个并不重要。不过,平均值是一个不错的选择 print(df3) key value 0 A 2 1 B 3 3
print(df1)
key value
0 A 2
1 B 3
2 C 2
3 D 3
print(df2)
key value
0 B 3
1 D 1
2 E 1
3 F 3
我想要的是它在键上做一个外部合并,然后选择哪个值不是NaN。
如果两者都是int(或float),它选择哪一个并不重要。不过,平均值是一个不错的选择
print(df3)
key value
0 A 2
1 B 3
3 C 2
4 D 2
5 E 1
6 F 3
我试过:
df3 = df1.merge(df2, on='key', how='outer')
但它会生成两个新列。我可以在之后做我的计算,但我确信有一个更简单的解决方案,我就是找不到。
谢谢您的帮助。这对我来说很有效,重复项是按照数据帧条目的顺序删除的,因此df1中的重复项会被删除,而df2会被保留,如果有任何键与重复项不匹配或两者恰好都是na,我们可以删除它们。
.dropna()
pd.concat([df1,df2]).dropna()
你可以用drop\u复制品来链接它,但是你的要求不是很清楚,如果你有一个外部合并工具来合并你丢失的密钥?您的输出与您的要求不匹配,B
的值应为1
?哦,糟了。抱歉,我将更新我的问题。请先签出combine\u()
dfs = pd.concat([df1,df2]).drop_duplicates(subset=['key'],keep='last').dropna(how='any')
key value
0 A 2
2 C 2
3 D 3
0 B 3
1 D 1
2 E 1
3 F 3