首页 > 解决方案 > 如果 NaN 则列的总和 else 列 - Python

问题描述

我有数据集:

在此处输入图像描述

要实现的逻辑:如果 prev_product_id 是 NaN 则 payment1+payment2 否则 payment2。

在此处输入图像描述

我试过列表理解:

column_names = ['payment1', 'payment2']
df['payment_corrected']= [df[column_names].sum(axis=1) if math.isnan(float(i))==True else df['payment2'] for i in df['prev_product_id']]

但得到:

在此处输入图像描述

为什么有一个数组而不是逐行求和?

标签: pythonpandas

解决方案


您可以更改代码如下:

df["payment_corrected"] = df["payment2"]
df["payment_corrected"][(df["prev_product_id"].isna())] = df["payment1"][(df["prev_product_id"].isna())] + df["payment2"][(df["prev_product_id"].isna())]

希望对您有所帮助。


推荐阅读