Pandas 使用时间序列重新索引数据帧
我有一个数据帧(df),它有一个称为“日期”的变量,我使用以下代码对其进行索引:Pandas 使用时间序列重新索引数据帧,pandas,dataframe,datetime,indexing,Pandas,Dataframe,Datetime,Indexing,我有一个数据帧(df),它有一个称为“日期”的变量,我使用以下代码对其进行索引: idx = df.groupby(pd.PeriodIndex(data=df.date, freq='10min')) df = idx.sum() df = df.reindex(ts).copy() 因为我的数据中有一些“漏洞”,我想用NAN来填补,所以我想用完整的时间序列ts来重新索引这个数据帧: print(ts) 数组(['2014-08-19T00:00:00.000000000','2014-
idx = df.groupby(pd.PeriodIndex(data=df.date, freq='10min'))
df = idx.sum()
df = df.reindex(ts).copy()
因为我的数据中有一些“漏洞”,我想用NAN来填补,所以我想用完整的时间序列ts来重新索引这个数据帧:
print(ts)
数组(['2014-08-19T00:00:00.000000000','2014-08-19T00:10:00.000000000',
“2014-08-19T00:20:00.000000000”。。。,
“2015-08-16T23:40:00.000000000”,“2015-08-16T23:50:00.000000000”,
'2015-08-17T00:00:00.000000000'],dtype='datetime64[ns]')
为了重新编制索引,我使用以下代码:
idx = df.groupby(pd.PeriodIndex(data=df.date, freq='10min'))
df = idx.sum()
df = df.reindex(ts).copy()
但会收到以下错误消息:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-160-2c1b1d883eb1> in <module>()
----> 1 bi = bi.reindex(index)
10 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/arrays/period.py in dt64arr_to_periodarr(data, freq, tz)
952 data, freq = data._values, data.dt.freq
953
--> 954 freq = Period._maybe_convert_freq(freq)
955
956 if isinstance(data, (ABCIndexClass, ABCSeries)):
pandas/_libs/tslibs/period.pyx in pandas._libs.tslibs.period._Period._maybe_convert_freq()
AttributeError: 'NoneType' object has no attribute 'n'
使用
DatetimeIndex
应该可以
PeriodIndex
用于timespan
但这里我们讨论的是时间戳
我们得到的是AttributeError:'NoneType'对象没有属性'n'
,因为我们试图用PeriodIndex
重新索引ts
代码
idx = df.groupby(pd.DatetimeIndex(data=df.date, freq='10min'))
df = idx.sum()
ts=['2014-08-19T00:00:00.000000000', '2014-08-19T00:10:00.000000000', '2014-08-19T00:20:00.000000000', '2015-08-16T23:40:00.000000000', '2015-08-16T23:50:00.000000000', '2015-08-17T00:00:00.000000000']
ts=pd.DatetimeIndex(ts)
df.reindex(ts)
输出
aa bb cc
2014-08-19 00:00:00 781.0 9.798 9.289
2014-08-19 00:10:00 782.0 10.004 9.382
2014-08-19 00:20:00 783.0 9.832 9.434
2015-08-16 23:40:00 NaN NaN NaN
2015-08-16 23:50:00 NaN NaN NaN
2015-08-17 00:00:00 NaN NaN NaN
你可以发布df,这样我们就可以很好地运行它了。谢谢你对我的问题感兴趣!不我收到了相同的错误消息…您是否已从idx和ts两个位置替换了PeriodIndex。不可能得到相同的错误,因为您现在没有使用“PeriodIndex”,并且错误是针对periodfreq=period。可能是转换频率(freq)
是!不幸的是,这是因为索引没有附加频率:DatetimeIndex(['2014-08-19 00:00:00', '2014-08-19 00:10:00', '2014-08-19 00:20:00', '2014-08-19 00:30:00', '2014-08-19 00:40:00', '2014-08-19 00:50:00' ... '2015-08-16 22:30:00', '2015-08-16 22:40:00', '2015-08-16 22:50:00', '2015-08-16 23:00:00', '2015-08-16 23:10:00', '2015-08-16 23:20:00、2015-08-16 23:30:00、2015-08-16 23:40:00、2015-08-16 23:50:00、2015-08-17 00:00:00'],dtype='datetime64[ns]',长度=13393,频率=None)