我有一个数据框,该数据框由通过监视活动(以一分钟的时间步长)收集的数据组成。
数据框具有以下格式的日期时间的第一列:
2018-04-15 00:00:00+02:00
2018-04-15 00:01:00+02:00
...
2018-04-18 23:59:00+02:00
随后是监视值的列。
如何创建一个新的数据框,其中包含在给定的一天中收集的所有数据行,例如2018-04-15
,从00:00
到23:59
。
答案 0 :(得分:1)
首先确保该列的dtype
是datetime。
df['Column Name'].dtype
如果输出是'O'或其他。做:
df['Column Name'] = pd.to_datetime(df['Column Name'])
接下来,我们有两个选择
1-我们可以将日期和时间划分为单独的列,并将其用作multi_index
:
df['Date'] = df['Column Name'].dt.date
df['Time'] = df['Column Name'].dt.time
df.set_index('Date','Time',drop=True)
#to access all rows for a particular date
df['Place your required date']
2-或使用loc
:
df_temp = df.loc[df['Date'] == 'Your Date']
答案 1 :(得分:0)
您可以使用pd.Grouper(freq='D')
按天分组。结果是生成器,生成名称-数据帧对:
示例数据框:
df = pd.DataFrame(np.random.random(10000), index=pd.date_range('15.05.2018', periods=10000, freq='min'))
df.head()
0
2018-05-15 00:00:00 0.693383
2018-05-15 00:01:00 0.158559
2018-05-15 00:02:00 0.752485
2018-05-15 00:03:00 0.990374
2018-05-15 00:04:00 0.768559
您可以遍历各组,即整天通过写
for name, group in df.groupby(pd.Grouper(freq='D')):
print(f'Day: {name}', f'\ndataframe:\n{group.head()}\n')
结果(为简洁起见,再次打印每天的head()
):
Day: 2018-05-15 00:00:00
dataframe:
0
2018-05-15 00:00:00 0.693383
2018-05-15 00:01:00 0.158559
2018-05-15 00:02:00 0.752485
2018-05-15 00:03:00 0.990374
2018-05-15 00:04:00 0.768559
Day: 2018-05-16 00:00:00
dataframe:
0
2018-05-16 00:00:00 0.553670
2018-05-16 00:01:00 0.091114
2018-05-16 00:02:00 0.226051
2018-05-16 00:03:00 0.826132
2018-05-16 00:04:00 0.817027
.
.
.
编辑:
在单独的列中具有标准索引和日期时间值的数据框也是如此:
示例数据框:
df = pd.DataFrame({'A': np.random.random(10000), 'date': pd.date_range('15.05.2018', periods=10000, freq='min')})
df.head()
A date
0 0.238412 2018-05-15 00:00:00
1 0.612181 2018-05-15 00:01:00
2 0.204367 2018-05-15 00:02:00
3 0.246023 2018-05-15 00:03:00
4 0.987291 2018-05-15 00:04:00
迭代通过将date-column-name传递到pd.Grouper()
而生成的组:
for name, group in df.groupby(pd.Grouper(key='date', freq='D')):
print(f'Day: {name}', f'\ndataframe:\n{group.head()}\n')
结果(为简洁起见,再次打印每天的head()
):
Day: 2018-05-15 00:00:00
dataframe:
A date
0 0.238412 2018-05-15 00:00:00
1 0.612181 2018-05-15 00:01:00
2 0.204367 2018-05-15 00:02:00
3 0.246023 2018-05-15 00:03:00
4 0.987291 2018-05-15 00:04:00
Day: 2018-05-16 00:00:00
dataframe:
A date
1440 0.039037 2018-05-16 00:00:00
1441 0.762621 2018-05-16 00:01:00
1442 0.158714 2018-05-16 00:02:00
1443 0.132067 2018-05-16 00:03:00
1444 0.277562 2018-05-16 00:04:00
.
.
.