如何基于Pandas DataFrame每行动态条件对指定列求和并新增列
实现方案
不需要逐行遍历,通过分组聚合+映射的方式即可高效实现需求,性能远高于逐行循环,适合各类数据量场景。
完整实现代码如下:
import pandas as pd # 输入数据 df = pd.DataFrame({ 'Date': ['2021-09-14','2021-09-14','2021-09-14','2021-09-13','2021-09-12','2021-09-12','2021-09-11'], 'Date_Yesterday': ['2021-09-13','2021-09-13','2021-09-13','2021-09-12','2021-09-11','2021-09-11','2021-09-10'], 'Clicks': [100,100,100,50,10,10,1] }) # 1. 统计每个日期对应的总点击量,生成日期-总点击映射表 daily_total_clicks = df.groupby('Date')['Clicks'].sum() # 2. 将每行的Date_Yesterday匹配到映射表,生成新列 df['Total_Clicks_Yesterday'] = df['Date_Yesterday'].map(daily_total_clicks) # 可选:将空值替换为N/A字符串 df['Total_Clicks_Yesterday'] = df['Total_Clicks_Yesterday'].fillna('N/A') print(df)
运行后输出结果和预期完全一致:
Date Date_Yesterday Clicks Total_Clicks_Yesterday 0 2021-09-14 2021-09-13 100 50.0 1 2021-09-14 2021-09-13 100 50.0 2 2021-09-14 2021-09-13 100 50.0 3 2021-09-13 2021-09-12 50 20.0 4 2021-09-12 2021-09-11 10 1.0 5 2021-09-12 2021-09-11 10 1.0 6 2021-09-11 2021-09-10 1 N/A
内容的提问来源于stack exchange,提问作者David Beaudway
相关产品推荐
相关产品推荐

