python - 如果 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']]
但得到:
为什么有一个数组而不是逐行求和?
解决方案
您可以更改代码如下:
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())]
希望对您有所帮助。
推荐阅读
- css - 在 CSS 中选择类中的类型元素
- service - Kubernetes Dashboard 服务无法访问
- python - 搜索具有相同日期、时间(时间 +/-30 秒)和事件名称的重复行
- python - 如何将字典键与字符串匹配并放入新字典?
- apache-nifi - NIFI 使用 Groovy 访问内容声明标识符
- excel - 过滤表,复制并粘贴到多个现有工作簿中
- python - pandas python根据一个或多个其他列的子集更新A列的子集
- html - CSS/SASS 根据类选择元素,但排除某些具有相同类的元素
- java - Java SAML2 SSO 客户端
- java - 错误:无法找到或加载主类 MyCSVParser