如何按县分组对累计确诊变量做差分,新增每日新增病例列?
实现方案
首先确保DataFrame中的date列是日期格式而非字符串,若未转换可先执行格式转换:
import pandas as pd df['date'] = pd.to_datetime(df['date'])
之后按如下步骤计算新增病例:
- 按县和日期升序排序,保证每个县的数据按时间先后排列,避免差值计算出错
df = df.sort_values(by=['county', 'date'], ignore_index=True)
- 按县分组计算累计确诊的差值,直接生成
new_cases列
df['new_cases'] = df.groupby('county')['confirmed'].diff()
补充说明
- 每个县的第一条数据因为没有前一天的累计值,
new_cases会默认返回NaN,和你需要的N/A效果一致 - 该方法是pandas内置的向量化操作,性能远高于手动循环遍历每个县,非常适合你提到的大规模数据集使用
- 如果需要处理数据修正导致的新增为负的异常情况,可以额外添加过滤逻辑:
# 将负数新增替换为0,可根据实际需求调整规则 df['new_cases'] = df['new_cases'].mask(df['new_cases'] < 0, 0)
内容的提问来源于stack exchange,提问作者Kristen
相关产品推荐
相关产品推荐

