我有一个简单的熊猫数据框,每天大约有 10000 到 20000 个条目。此数据框包含一个点和一个日期时间 (datetime64)。例如,它看起来像这样: point timestamp_local0 A 2018-09-29 00:00:201 A 2018-09-29 00:04:342 A 2018-09-29 00:06:593 B 2018-09-29 00:11:094 B 2018-09-29 01:19:28... ... ...24282 B 2018-09-29 21:40:2624283 C 2018-09-29 21:40:3124284 C 2018-09-29 21:45:1724285 A 2018-09-29 22:20:2924286 B 2018-09-29 22:28:08我现在要得到的是一个数据框,它按点和我想指定的间隔对上面的数据框进行分组,并且还计算间隔的每个点的条目数量。此外,间隔应该是例如 5 分钟。间隔,10分钟。间隔或每天、每月或每年的 1 个间隔。到目前为止,这是我对间隔进行分段的结果:df['10min_period'] = df.apply(lambda x: "period_%d"%(int(x[1].minute/10) + 1), axis=1)这将返回: point timestamp_local 10min_period0 A 2018-09-29 00:00:20 period_11 B 2018-09-29 00:04:34 period_12 B 2018-09-29 00:06:59 period_13 C 2018-09-29 00:11:09 period_24 C 2018-09-29 01:19:28 period_2这计算了时期:df = df.groupby([df['point'], df['10min_period']]).agg(['count'])这将返回以下数据框: timestamp_localpoint 10min_period countA period_1 2092 period_2 2437 period_3 2181 period_4 2525 period_5 2325 period_6 2317B period_1 1814 period_2 1719 period_3 1732 period_4 1575 period_5 1789 period_6 1781... ... ...但这并不是我想要的。原因是期间行条目错误。我的代码以独立于年、月、日和小时的10 分钟间隔对时间段进行了分段。这正是我不想要的!我想要一个按我指定的时间间隔分段的日期框架,例如 5 分钟。, 10 min., 1 day, 1 year 等等但考虑年、月、日、小时和分钟!(看看这些句点是如何命名的!)以这种方式命名时间段非常重要,所以我知道条目包含哪一天和时间间隔。我怎样才能做到这一点?例如,如果它是 5 分钟的间隔,则该时间段应命名为,period_2018-09-29_00:00:00依此类推。period_2018-09-29_00:05:00period_2018-09-29_00:25:00
1 回答

慕莱坞森
TA贡献1810条经验 获得超4个赞
您是否正在寻找这样的东西,间隔很短:
df.groupby(['point',df.timestamp_local.dt.floor('5Min')]).size()
这个,对于月/年
df.groupby(['point', df.timestamp_local.dt.to_period('M')]).size()
添加回答
举报
0/150
提交
取消