从 Pandas 数据框中另一个系列分段的日期累积计数创建增量计数
Posted
技术标签:
【中文标题】从 Pandas 数据框中另一个系列分段的日期累积计数创建增量计数【英文标题】:Create an incremental count from a cumulative count by date segmented by another series in a Pandas data frame 【发布时间】:2021-01-15 04:47:06 【问题描述】:我在一个日期框架 ('df1') 中有累积数据(系列'cumulative_count'),该数据框架由系列“状态”分段,我想在数据框架中创建一个新系列,显示增量计数“状态”。
所以:
df1 = pd.DataFrame('date': ['2020-01-03','2020-01-03','2020-01-03','2020-01-04','2020-01-04','2020-01-04','2020-01-05','2020-01-05','2020-01-05'],'state': ['NJ','NY','CT','NJ','NY','CT','NJ','NY','CT'], 'cumulative_count': [1,3,5,3,6,7,19,15,20])
...转换为添加新系列(“增量计数”),其中增量计数按日期计算,但也按状态分段,生成的结果为...
df2 = pd.DataFrame('date': ['2020-01-03','2020-01-03','2020-01-03','2020-01-04','2020-01-04','2020-01-04','2020-01-05','2020-01-05','2020-01-05'],'state': ['NJ','NY','CT','NJ','NY','CT','NJ','NY','CT'], 'cumulative_count': [1,3,5,3,6,7,19,15,20],'incremental_count': [1,3,5,2,3,2,16,9,13])
任何有关如何执行此操作的建议将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:由于您的 DataFrame 已按 'date'
排序,因此您希望在每个状态组中使用 diff
。然后fillna
获取每个州内第一个日期的正确值。
df1['incremental_count'] = (df1.groupby('state')['cumulative_count'].diff()
.fillna(df1['cumulative_count'], downcast='infer'))
date state cumulative_count incremental_count
0 2020-01-03 NJ 1 1
1 2020-01-03 NY 3 3
2 2020-01-03 CT 5 5
3 2020-01-04 NJ 3 2
4 2020-01-04 NY 6 3
5 2020-01-04 CT 7 2
6 2020-01-05 NJ 19 16
7 2020-01-05 NY 15 9
8 2020-01-05 CT 20 13
【讨论】:
以上是关于从 Pandas 数据框中另一个系列分段的日期累积计数创建增量计数的主要内容,如果未能解决你的问题,请参考以下文章
将语料库中的名称部分匹配到 Pandas 数据框中另一列中的名称
如何计算包含一组列中的值和 Pandas 数据框中另一列中的另一个值的行数?