如何基于DataFrame中diff列条件对对应ts列求和生成SUM列
解决方案
假设你的DataFrame名为df,可以通过以下步骤实现需求:
提取用于判断的diff列和待求和的ts列:
- diff列:
ts1_diff,ts2_diff,ts3_diff - ts列:
ts1,ts2,ts3
- diff列:
生成布尔掩码,标记哪些diff列的值≥0:
mask = df[['ts1_diff', 'ts2_diff', 'ts3_diff']] >= 0将ts列与掩码相乘(布尔值自动转为0/1,不满足条件的ts值会被置为0),再按行求和生成
SUM列:df['SUM'] = df[['ts1', 'ts2', 'ts3']].mul(mask).sum(axis=1)
完整示例
假设你的DataFrame初始数据如下:
| id | ts1 | ts2 | ts3 | ts1_diff | ts2_diff | ts3_diff |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 5 | -1 | -2 | 3 |
| 2 | 3 | 4 | 3 | 2 | 1 | 0 |
运行代码后,生成的SUM列结果如下:
| id | ts1 | ts2 | ts3 | ts1_diff | ts2_diff | ts3_diff | SUM |
|---|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 5 | -1 | -2 | 3 | 5 |
| 2 | 3 | 4 | 3 | 2 | 1 | 0 | 10 |
这个方法通过布尔掩码精准筛选需要参与求和的ts值,操作简洁高效,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Shash
相关产品推荐
相关产品推荐

