【问题标题】:Element wise max comparison of two pandas dataframes两个熊猫数据帧的元素最大比较
【发布时间】:2021-06-11 16:36:49
【问题描述】:

我有两个数据框 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

我如何做到这一点?

谢谢!

【问题讨论】:

  • 不确定是否值得注意,但在我的实际情况下,索引是日期时间格式。

标签: python pandas dataframe


【解决方案1】:

我们可以在索引上使用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

【讨论】:

    【解决方案2】:

    通过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
    

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多