如何从一列中减去另一列?

2024-03-29 14:48:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如何通过从“Build Dep”中减去“Build”和从“Car Dep”中减去“Car”来创建一个新列,而不只是用一个数字填充所有值

下面是我使用的数据帧

df = pd.DataFrame({'Accounts':['Cash','Build','Build Dep', 'Car', 'Car Dep'],
              'Debits':[300,500,0,100,0],
              'Credits':[0,0,250,0,50]})

df

Tags: 数据builddataframedf数字cashcarpd
2条回答

简单到在列上使用-操作符

df['Net'] = df['Credits'] - df['Debits']

看起来您想要创建新行。您可以通过Account对数据帧进行索引,这还有一个优点,即剩余的列是您要减去的内容。然后减去并添加一个新行

>>> df = pd.DataFrame({'Accounts':['Cash','Build','Build Dep', 'Car', 'Car Dep'],
...               'Debits':[300,500,0,100,0],
...               'Credits':[0,0,250,0,50]})
>>> 
>>> df = df.set_index('Accounts')
>>> df.loc['Build Delta'] = df.loc['Build Dep'] - df.loc['Build']
>>> df.loc['Car Delta'] = df.loc['Car'] - df.loc['Car Dep']
>>> 
>>> print(df)
             Debits  Credits
Accounts                    
Cash            300        0
Build           500        0
Build Dep         0      250
Car             100        0
Car Dep           0       50
Build Delta    -500      250
Car Delta       100      -50

如果希望所有行都有一列delta,只需减去列即可。这就是numpy和熊猫的美丽之处。您可以使用少量代码将操作应用于整个列,并获得比使用普通python更好的性能

>>> df = pd.DataFrame({'Accounts':['Cash','Build','Build Dep', 'Car', 'Car Dep'],
...               'Debits':[300,500,0,100,0],
...               'Credits':[0,0,250,0,50]})
>>> 
>>> df = df.set_index('Accounts')
>>> 
>>> 
>>> 
>>> df['Delta'] = df['Credits'] - df['Debits']
>>> df
           Debits  Credits  Delta
Accounts                         
Cash          300        0   -300
Build         500        0   -500
Build Dep       0      250    250
Car           100        0   -100
Car Dep         0       50     50

相关问题 更多 >