Python pandas 带条件的列的减法计算

Python pandas subtraction calculation of columns with criteria

我正在尝试从同一数据框中的另一列中减去数据框中的一列。但是,我需要一些额外的标准。例如,如果两列都是 NaN,那么我希望结果为 NaN。如果列 'Feb' 是 Nan 但相应的 'Jan' 是一个数字,那么我想将 'Feb' 变成零进行计算,因此结果只是 [=23 的完整值=] 而不是 NaN,因为值的计算错误 - Nan。

为了完整起见,请提供一些附加信息:一月总是高于二月。因此,如果有二月的数字,则一月的数字总是更高,在这种情况下,一月永远不会是 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

您可以将 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