【问题标题】:How to subtract multiple columns from one another如何相互减去多列
【发布时间】:2019-06-28 19:33:55
【问题描述】:

在 Python 3.6 中与 Pandas 一起工作,我试图找出一种简单的方法来将多列相互减去。

想象一个两行四列的简单数据框 df:

    A    B    C    D
0   1    2    3    4
1   5    6    7    8

我正在尝试从 B 中减去 A 并从 D 中减去 C 来实现:

    A    B    C    D
0   1    1    3    1
1   5    1    7    1

这可以很容易地逐列完成,例如对于 B-A 操作:

 df["B"] = df["B"] - df["A"]

或

 df["B"] = df["B"].sub(df["A"], axis=0)

我试过了:

 df[["B", "D"]] = df[["B", "D"]] - df[["A", "C"]]

和

 df[["B", "D"]] = df[["B", "D"]].sub(df[["A", "C"]], axis=0)

但是两者都给出了关于列不匹配的错误,所以我怀疑我无意中告诉它执行某种多轴操作或其他什么。无论如何,这些都不起作用。

ValueError: Columns must be same length as key

那么,在同一行中为 B-A 和 D-C 完成此操作的最简单方法是什么...我的实际数据框有大约 30 列,因此逐行并不可行:P

谢谢:)

【问题讨论】:

  • 要减去的列是否总是彼此相邻,或者您是否有列对的列表或元组?

标签: python-3.x pandas


【解决方案1】:

在这种情况下通常使用 numpy 操作,因为该操作是按元素完成的。有一个非常小的补充可以解决这个问题。将df[['A','C']] 更改为df[['A','C']].values。

代码:

df[['B', 'D']] = df[['B','D']] - df[['A','C']].values

输出:

    A   B   C   D
0   1   1   3   1
1   5   1   7   1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2017-04-22
    • 2012-07-14
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多