我有两个这样的DataFrame:
1 2 3
0 61.579 0.000000 47.279861
1 0.000 0.000000 0.000000
2 62.700 9.180000 48.479861
3 56.100 40.180000 71.679861
4 73.100 50.930000 71.679861
5 88.300 37.930000 36.479861
我需要合并它们每次选择更高的值.所有值都是浮点数.
有任何想法吗?我必须循环DataFrames?
最佳答案 首先需要
concat
,然后需要
groupby
和最大聚合:
df1 = pd.DataFrame({0:[4,5,4],
1:[7,8,9]})
print (df1)
0 1
0 4 7
1 5 8
2 4 9
df2 = pd.DataFrame({0:[8,5,6],
1:[9,4,4]})
print (df2)
0 1
0 8 9
1 5 4
2 6 4
df = pd.concat([df1, df2]).groupby(level=0).max()
print (df)
0 1
0 8 9
1 5 8
2 6 9
如果需要更快的解决方案使用numpy.where
:
a = df1.values
b = df2.values
df = pd.DataFrame(np.where(a > b, a, b), index=df1.index, columns=df1.columns)
print (df)
0 1
0 8 9
1 5 8
2 6 9