我有一个相对较大的数据集,我想根据包含日期时间对象的列,在Python中分割成多个数据格式。列中的值(我希望用它来分割数据)是以以下格式提供的:
2015-11-01 00:00:05
如何通过以下方式将将数据分割为5秒间隔的:
2015-11-01 00:00:00 - 2015-11-01 00:00:05
,2015-11-01 00:00:05 - 2015-11-01 00:00:10
,等等。我还需要在每个结果数据中计算观察的数量。换句话说,如果我能得到另一个有2列的数据,那就太好了:第一列表示分裂的组(这个列的值不重要:它们可以是1,2,3,.表示5秒间隔的顺序),第2栏显示属于各自间隔的观测数。
发布于 2017-11-06 08:11:43
我认为存储多个DataFrame
的最佳方法是dict
。
rng = pd.date_range('2015-11-01 00:00:00', periods=100, freq='S')
df = pd.DataFrame({'Date': rng, 'a': range(100)})
print (df.head(10))
Date a
0 2015-11-01 00:00:00 0
1 2015-11-01 00:00:01 1
2 2015-11-01 00:00:02 2
3 2015-11-01 00:00:03 3
4 2015-11-01 00:00:04 4
5 2015-11-01 00:00:05 5
6 2015-11-01 00:00:06 6
7 2015-11-01 00:00:07 7
8 2015-11-01 00:00:08 8
9 2015-11-01 00:00:09 9
dfs={k.strftime('%Y-%m-%d %H:%M:%S'):v for k,v in
df.groupby(pd.Grouper(key='Date', freq='5S'))}
print (dfs['2015-11-01 00:00:00'])
Date a
0 2015-11-01 00:00:00 0
1 2015-11-01 00:00:01 1
2 2015-11-01 00:00:02 2
3 2015-11-01 00:00:03 3
4 2015-11-01 00:00:04 4
print (dfs['2015-11-01 00:00:05'])
Date a
5 2015-11-01 00:00:05 5
6 2015-11-01 00:00:06 6
7 2015-11-01 00:00:07 7
8 2015-11-01 00:00:08 8
9 2015-11-01 00:00:09 9
发布于 2017-11-06 08:31:16
您可以按Date
列的楼层按5s
进行分组。
f = '{:%Y-%m-%d %H:%M:%S}'.format
dfs = {f(k): g for k, g in df.groupby(df.Date.dt.floor('5s'))}
https://stackoverflow.com/questions/47131431
复制相似问题