Python 按时间搜索或分组熊猫中的时间序列数据
我有一个这样的数据集Python 按时间搜索或分组熊猫中的时间序列数据,python,regex,pandas,data-science,data-cleaning,Python,Regex,Pandas,Data Science,Data Cleaning,我有一个这样的数据集 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
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-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
如何提取包含精确时间的行?例如
我试着这样做
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-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
但它给了我这个结果
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
我希望结果是这样的
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-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
这似乎不是一个regex问题,因为您在代码中将regex标志专门设置为“False” 但是,只要在搜索值前面加上一个“”,您就可以对所需的值进行简单搜索(基于您提供给我们的数据样本)
df = dataset[dataset.date.str.contains(" 2:00:00",regex=False)
一旦
date
列包含时间戳,就可以使用获取年、月、日、小时等
df = df.assign(timestamp=pd.to_datetime(df['date'])
df[df['timestamp'].dt.hour == 2
如果我想按时间分组呢?