python - 数据框中的每日数据到每周
问题描述
我正在查看每日记录的数据集,我想从每日汇总到每周以缩小数据集的大小。我玩过重新采样,这似乎效果很好,但是我注意到它会从我的非数值列(县和州)中掉下来。
理想情况下,我正在寻找预期的输出:
- 日期:星期六的一周结束日期
- 大地水准面:保持不变
- 县:不变
- 状态:保持不变
- 案例:大地水准面一周结束日期内所有记录的总和
- 死亡:大地水准面一周结束日期内所有记录的总和
- case_avg:保持不变(保留日期=周结束日期的单条记录)
- death_avg:保持不变(保留单条记录,其中日期 = 周结束日期)
不要真正关心 case/deaths_avg_per_100k 字段。如果 case/deaths_avg 字段太难以操作,我可以没有它们,但如果有的话会很好。
在不丢失字符串列的情况下,最好的方法是什么?这是我尝试过的,但导致我缺少字符串列(县和州):
date geoid county ... deaths deaths_avg deaths_avg_per_100k
0 2020-01-21 USA-53061 Snohomish ... 0 0.0 0.0
1 2020-01-22 USA-53061 Snohomish ... 0 0.0 0.0
2 2020-01-23 USA-53061 Snohomish ... 0 0.0 0.0
3 2020-01-24 USA-53061 Snohomish ... 0 0.0 0.0
4 2020-01-24 USA-17031 Cook ... 0 0.0 0.0
[5 rows x 10 columns]
import pandas as pd
url = 'https://raw.githubusercontent.com/nytimes/covid-19-data/master/rolling-averages/us-counties.csv'
df = pd.read_csv(url, low_memory=False, encoding = 'unicode_escape')
df['date'] = df['date'].astype('datetime64[ns]')
df = df.groupby('geoid','county','state').resample('W-SAT',
label='right',
closed='right',
on='date').sum().reset_index().sort_values(by='date')
geoid date cases ... deaths deaths_avg deaths_avg_per_100k
15373 USA-06059 2020-01-25 1 ... 0 0.0 0.0
213034 USA-53061 2020-01-25 1 ... 0 0.0 0.0
44145 USA-17031 2020-01-25 1 ... 0 0.0 0.0
14582 USA-06037 2020-02-01 1 ... 0 0.0 0.0
16352 USA-06085 2020-02-01 1 ... 0 0.0 0.0
[5 rows x 8 columns]
解决方案
推荐阅读
- react-native - 如何修复构建失败并出现异常
- python - 在 python 链表中添加不同的信息并打印
- python - 仅保留满足与另一列相关的条件的行
- rest - ActiveMQ Web 控制台作为 Restful API?
- c# - 区分 Cosmos DB 中的唯一约束违规
- scala - Scala - Spark Boost GroupBy 多维度计算
- javascript - Redux 增加购物车中的数量
- angularjs - 如何观察数组改变了外部服务?
- javascript - 如何解析非默认(非英语)时间格式,包括 d3.js 中的完整月份名称?
- oracle - 如何在 oracle12c 中同时应用于删除和更新级联?