Python 熊猫-从24小时数据的最后一分钟选择数据
熊猫是这里的初学者 我有一个以分钟为单位的24小时时间序列,在a列中有一个累积值:Python 熊猫-从24小时数据的最后一分钟选择数据,python,pandas,dataframe,time-series,Python,Pandas,Dataframe,Time Series,熊猫是这里的初学者 我有一个以分钟为单位的24小时时间序列,在a列中有一个累积值: Time Energy 11-01-2017 10:14 19.14634168 11-01-2017 10:15 19.14702618 11-01-2017 10:16 19.14719065 11-01-2017 10:17 19.14719065 … 11-01-2017 23:56 19.47694149 11-01-2017 23:57
Time Energy
11-01-2017 10:14 19.14634168
11-01-2017 10:15 19.14702618
11-01-2017 10:16 19.14719065
11-01-2017 10:17 19.14719065
…
11-01-2017 23:56 19.47694149
11-01-2017 23:57 19.4771605
11-01-2017 23:58 19.47753776
11-01-2017 23:59 19.47801377
我想知道每小时结束时A列的值是多少(dd-mm-yyy-hh:59),并将此数据保存在csv文件中,添加一个额外的列以显示小时。结果如下所示:
Time Hour Energy
11-01-2017 00:59 1 02.0000000
11-01-2017 01:59 2 04.1234554
11-01-2017 02:59 3 06.1234554
...
11-01-2017 23:59 24 19.4780137
我应该基于秒值59迭代时间序列,还是更容易每60行提取列A中的值,因为总是有1440行(1440分钟)?您可以使用:
df.Time = pd.to_datetime(df.Time)
df['hour'] = df.Time.dt.hour + 1
df1 = df[df.Time.dt.minute == 59]
print (df1)
Time Energy hour
7 2017-11-01 23:59:00 19.478014 24
如果您的时间值是规则的,没有间隙,如您所说,您可以将切片语义与步骤arg结合使用:
df.iloc[::60]
如果第一个条目不是第一分钟,如您所示,则只需偏移第一个参数:
df.iloc[45::60]
因为第14分钟比第59分钟差45分
计时
In [176]:
s = pd.date_range(dt.datetime(2016,1,1), freq='1min', periods=10000)
s
Out[176]:
DatetimeIndex(['2016-01-01 00:00:00', '2016-01-01 00:01:00',
'2016-01-01 00:02:00', '2016-01-01 00:03:00',
'2016-01-01 00:04:00', '2016-01-01 00:05:00',
'2016-01-01 00:06:00', '2016-01-01 00:07:00',
'2016-01-01 00:08:00', '2016-01-01 00:09:00',
...
'2016-01-07 22:30:00', '2016-01-07 22:31:00',
'2016-01-07 22:32:00', '2016-01-07 22:33:00',
'2016-01-07 22:34:00', '2016-01-07 22:35:00',
'2016-01-07 22:36:00', '2016-01-07 22:37:00',
'2016-01-07 22:38:00', '2016-01-07 22:39:00'],
dtype='datetime64[ns]', length=10000, freq='T')
In [179]:
%timeit s[s.minute == 59]
%timeit s[::60]
1000 loops, best of 3: 639 µs per loop
10000 loops, best of 3: 27.5 µs per loop
所以这里的切片速度快了约20倍谢谢。。。我很难添加“小时”列。问题是该列实际上没有命名为“Time”;它是空白/索引列。你是如何引用它的?使用“Index”而不是“Time”?准确地说,并删除
dt
-df['hour']=df.Index.hour+1
如果我只想获得最后一分钟的数据怎么办。。。。很有趣,谢谢。我使用了这个切片和上面jezrael对解决方案的建议的组合。@这取决于这里索引的形式,在这里你有规则的值,那么切片速度更快,但另一个解决方案在寻找相等值时会起作用