我有两个数据框 df1 和 df2。
df1 =
A1 B1 C1
0 1 2 0
1 4 2 1
2 2 1 5
df2 =
A2 B2 C2
0 2 1 5
1 1 3 2
2 2 2 4
我希望创建第三个数据帧,它在两个数据帧的相应元素之间具有最大值。
即
df3 = max(df1, df2)
print(df3)
A3 B3 C3
0 2 2 5
1 4 3 2
2 2 2 5
我如何实现这一目标?
谢谢!
答案 0 :(得分:2)
我们可以在索引上使用 DataFrame.max
:
df2.columns = df1.columns
df3 = pd.concat([df1, df2]).max(level=0)
df3.columns = df3.columns.str.replace("\d", "3", regex=True)
A3 B3 C3
0 2 2 5
1 4 3 2
2 2 2 5
答案 1 :(得分:1)
尝试通过 where()
方法和 rename()
方法:
out=df1.where(df1.values>df2.values,df2.values).rename(columns=lambda x:x[0]+'3')
或
通过 numpy 的 where()
和 DataFrame()
方法:
out=pd.DataFrame(np.where(df1.values>df2.values,df1.values,df2.values),columns=['A3','B3','C3'])
out
的输出:
A3 B3 C3
0 2 2 5
1 4 3 2
2 2 2 5