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