Pandas实现仅当AuM列非空时对AuM、NNA两列条件求和
Pandas按条件生成Sum列实现方案
核心逻辑
仅当AuM列值为非空有效值时,对AuM、NNA两列做数值求和写入Sum列;AuM为空的行,Sum列对应位置留空。
注意原始数据中AuM、NNA列混合存储了字符串、数值类型,计算前需要统一做类型转换避免报错。
完整实现代码
import pandas as pd # 构造原始DataFrame lst = [['01012021','',100],['01012021','','50'],['01022021',140,5],['01022021',160,12],['01032021','',20],['01032021',200,25]] df1 = pd.DataFrame(lst, columns=['Date','AuM','NNA']) # 初始化Sum列全为空字符串 df1['Sum'] = '' # 筛选AuM非空的有效行 valid_rows = df1['AuM'] != '' # 仅对有效行做数值求和 df1.loc[valid_rows, 'Sum'] = df1.loc[valid_rows, 'AuM'].astype(int) + df1.loc[valid_rows, 'NNA'].astype(int) df2 = df1
结果说明
运行代码后,所有AuM为空的行Sum列均为空字符串,AuM非空的行自动计算两列和:
- 01022021日期下两行的Sum值分别为145、172,和预期完全一致
- 给出的预期输出中遗漏了原始数据最后一行
['01032021',200,25]的处理结果,按逻辑该行AuM非空,Sum值应为225,如果需要和贴出的5行结果完全对齐,提前过滤掉该行即可。
内容的提问来源于stack exchange,提问作者Bsleon
相关产品推荐
相关产品推荐

