【发布时间】: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