Поиск или группирование данных временных рядов по времени в пандах - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть такой набор данных

dataset = pd.read_csv('1053.csv')
print dataset.head(25)

                  date  power
0    2009-7-14 0:30:00  0.039
1    2009-7-14 1:00:00  0.147
2    2009-7-14 1:30:00  0.134
3    2009-7-14 2:00:00  0.131
4    2009-7-14 2:30:00  0.076
5    2009-7-14 3:00:00  0.039
6    2009-7-14 3:30:00  0.039
7    2009-7-14 4:00:00  0.052
8    2009-7-14 4:30:00  0.148
9    2009-7-14 5:00:00  0.136
10   2009-7-14 5:30:00  0.132
11   2009-7-14 6:00:00  0.060
12   2009-7-14 6:30:00  0.034
13   2009-7-14 7:00:00  0.034
14   2009-7-14 7:30:00  0.033
15   2009-7-14 8:00:00  0.326
16   2009-7-14 8:30:00  0.140
17   2009-7-14 9:00:00  0.133
18   2009-7-14 9:30:00  0.107
19  2009-7-14 10:00:00  0.161
20  2009-7-14 10:30:00  0.042
21  2009-7-14 11:00:00  1.259
22  2009-7-14 11:30:00  1.227
23  2009-7-14 12:00:00  0.167
24  2009-7-14 12:30:00  0.518

Как извлечь строки, содержащие точное время?например.Я пытался сделать так

df = dataset[dataset.date.str.contains("2:00:00",regex=False)]
df1 = df.reset_index()
del df1['index']
print df1.head(7)

Но это дает мне этот результат.

                  date  power
0    2009-7-14 2:00:00  0.131
1   2009-7-14 12:00:00  0.167
2   2009-7-14 22:00:00  0.208
3    2009-7-15 2:00:00  0.085
4   2009-7-15 12:00:00  0.097
5   2009-7-15 22:00:00  0.203
6    2009-7-16 2:00:00  0.038

Я хочу, чтобы результаты были такими

                  date  power
0    2009-7-14 2:00:00  0.131
1    2009-7-15 2:00:00  0.085
2    2009-7-16 2:00:00  0.038
3    2009-7-17 2:00:00  0.141
4   2009-7-18 2:00:00  0.039
5   2009-7-19 2:00:00  0.039
6   2009-7-20 2:00:00  0.079

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Когда ваш столбец date содержит метки времени панд, вы можете использовать метод доступа dt , чтобы получить годы, месяцы, дни, часы и т. Д.

df = df.assign(timestamp=pd.to_datetime(df['date'])
df[df['timestamp'].dt.hour == 2
0 голосов
/ 20 сентября 2018

Похоже, это не вопрос регулярных выражений, поскольку вы специально устанавливаете флаг регулярного выражения в своем коде «Ложь».

Однако вы должны иметь возможность выполнить простой поиск значения, которое выхотите (на основе предоставленного вами образца данных), просто добавив "" перед значением поиска.

df = dataset[dataset.date.str.contains(" 2:00:00",regex=False)
...