Python pandas减法计算具有条件的列

时间:2017-06-13 01:35:37

标签: python pandas dataframe subtraction

我试图从同一数据框中的另一列中减去数据框中的一列。但是,我需要一些额外的标准。例如,如果两列都是NaN,那么我希望结果为NaN。如果列' 2月'是Nan,但相应的' Jan'是一个数字,然后我想把' Feb'变为零,用于计算,因此结果只是'的全部值。简'由于计算误差值而不是NaN - Nan。

为了完整性,还有一些额外的信息:Jan总是高于2月。所以如果有2月号,则总是有更高的Jan数,在这种情况下Jan永远不是NaN。

下面是一些简单的相同数据,可以尝试和说明。

import pandas as pd


sales = [{'account': 'Jones LLC', 'Jan': 222,  },
         {'account': 'Alpha Co',  'Jan': 240, 'Feb': 50, },
         {'account': 'Delta Co' },
         {'account': 'Blue Inc',  'Jan': 150,  }]
df = pd.DataFrame(sales)

df = df[['account', 'Jan', 'Feb' ]]

df['SubtractionResult'] = df['Jan']-df['Feb']

print (df)

    account    Jan   Feb  SubtractionResult[181]: 
0  Jones LLC  222.0   NaN                NaN
1   Alpha Co  240.0  50.0              190.0
2   Delta Co    NaN   NaN                NaN
3   Blue Inc  150.0   NaN                NaN

我希望结果看起来像这样:

    account    Jan   Feb  SubtractionResult[181]: 
0  Jones LLC  222.0   NaN              222.0
1   Alpha Co  240.0  50.0              190.0
2   Delta Co    NaN   NaN              NaN
3   Blue Inc  150.0   NaN              150.0

1 个答案:

答案 0 :(得分:3)

您可以在 Feb 列中将缺失值替换为零,然后执行减法操作:

df['SubtractionResult'] = df['Jan'] - df['Feb'].fillna(0)
df
#     account     Jan    Feb    SubtractionResult
#0  Jones LLC   222.0    NaN                222.0
#1   Alpha Co   240.0   50.0                190.0
#2   Delta Co     NaN    NaN                  NaN
#3   Blue Inc   150.0    NaN                150.0