在Python 3.6与大熊猫的工作,我试图找出一个简单的方法来从彼此减去多列。
想象一下,一个简单的数据帧,DF,两行和四列:
A B C D
0 1 2 3 4
1 5 6 7 8
我想从B和C从d达到减去:
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
SOOO什么是实现这个在同一行两个B-A和d-C的最简单的方法......我的实际数据帧具有约30列,因此行由行是不是真的可行的:P
谢谢 :)
甲numpy的操作通常在这种情况下使用的,作为操作要的elementwise完成。有一个非常小的增加,其解决了这个问题。更改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