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
我正在尝试从同一数据框中的另一列中减去数据框中的一列。但是,我需要一些额外的标准。例如,如果两列都是 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