python dataframe 从多列中减去一列

python dataframe substract a column from multiple columns

我有一个数据框,我想从多列中减去一列 代码:

df = pd.DataFrame('A':[10,20,30],'B':[100,200,300],'C':[15,10,50])

# Create a new A and B columns by sub-stracting C from A and B
df[['newA','newB']] = df[['A','B']]-df['C']

当前输出:

    raise ValueError("cannot reindex from a duplicate axis")

ValueError: cannot reindex from a duplicate axis

你可以查看sub

df[['newA', 'newB']] = df[['A', 'B']].sub(df['C'],axis=0)
df
Out[114]: 
    A    B   C  newA  newB
0  10  100  15    -5    85
1  20  200  10    10   190
2  30  300  50   -20   250

除了上述答案之外的另一个选项,您可以通过 df[['C']].values 将列 'C' 转换为 numpy 数组。因此,新代码将是:

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

尝试使用 Pandas .apply() 方法。您可以传递列并将给定的函数应用于它们,在这种情况下减去您现有的列之一。下面应该工作。文档 here.

df[['newA','newB']] = df[['A','B']].apply(lambda x: x - df['C'])

您可以尝试将 df['C'].values 转换为与 df[['A','B']] 相同的形状。

df[['newA','newB']] = df[['A','B']] - df['C'].values[:, None]
print(df)

    A    B   C  newA  newB
0  10  100  15    -5    85
1  20  200  10    10   190
2  30  300  50   -20   250