【问题标题】:How to Subtract one column in pandas from another? [duplicate]如何从另一列中减去熊猫中的一列? [复制]
【发布时间】:2020-06-17 08:49:16
【问题描述】:

如何通过从“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

【问题讨论】:

  • 您能分享一下您的预期输出吗?
  • 这能回答你的问题吗? Subtract two columns in dataframe
  • Build 和 Build Dep 是 OP 的 DataFrame 中的行,所以不确定是列减法
  • 您减去的是行,而不是列。您想要一个具有新名称的新行吗?

标签: python pandas dataframe


【解决方案1】:

您似乎想要创建新行。您可以通过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

如果您希望所有行都有一列增量,只需减去这些列。这就是 numpy 和 pandas 的美妙之处。您可以使用少量代码将操作应用于整个列,并获得比在 vanilla 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

【讨论】:

  • 感谢您的帮助!有没有办法让我做同样的事情,但在一个列中添加一个包含所有 Delta 的新列?
  • 是的,它的@fawcj001 的回答。它是执行 pandas 的更正常方式 - 对整个列进行操作。我将举一个例子,但如果它是你想要的方式,我建议将你的接受转移到 fawcj001,这样其他人就会知道你认为这是正确的方式。
【解决方案2】:

就像在列上使用- 运算符一样简单。

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

【讨论】:

    猜你喜欢
    • 2013-12-04
    • 2017-09-01
    • 2023-01-25
    • 2019-02-05
    • 1970-01-01
    • 2021-10-22
    • 2014-06-10
    • 2015-09-19
    相关资源
    最近更新 更多