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
我有一个数据框,我想从多列中减去一列 代码:
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