【问题标题】:How to perform element wise operation on two sets of columns in pandas如何对熊猫中的两组列执行元素明智的操作
【发布时间】:2018-11-07 04:32:26
【问题描述】:

我有数据框:

 c1 | c2 | c3 | c4
 5  |  4 | 9  | 3

如何在 c1/c2 和 c3/c4 之间执行元素除法(或其他操作)

所以结果是:

.5555 | 1.33333

我试过了:

df[['c1', 'c2']].div(df[['c3', 'c4']], axis='index'))

但这只会导致 NaN。

【问题讨论】:

  • 是的,一个有 2 列的数据框,一列用于 c1/c3 的结果,另一列用于 c2/c4 的结果。抱歉我没说清楚。

标签: python pandas numpy dataframe operation


【解决方案1】:

很简单,只是除以值

df[['c1', 'c2']]/df[['c3','c4']].values

顺序很重要,因此请确保在分母中使用正确的顺序。无需重新创建 DataFrame

【讨论】:

    【解决方案2】:

    一种解决方案是下拉到 NumPy 并创建一个新的数据框:

    res = pd.DataFrame(df[['c1', 'c2']].values / df[['c3', 'c4']].values)
    
    print(res)
    
              0         1
    0  0.555556  1.333333
    

    【讨论】:

      【解决方案3】:

      我不确定我是否正确理解了您的问题,但您实际上可以划分系列。

      df['c1/c2'] = df['c1'] / df['c2']
      

      看到这个答案:How to divide two column in a dataframe

      编辑:好的,我明白 OP 现在在问什么。请查看其他答案。

      【讨论】:

      • 是的,但我想对整个操作进行矢量化,这样我就不必通过列对进行循环
      • 这与 OP 想要的输出不匹配。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多