如何从彼此减去多列

问题描述 投票:5回答:1

在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

谢谢 :)

python-3.x pandas
1个回答
1
投票

甲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
© www.soinside.com 2019 - 2024. All rights reserved.