Pandas 使用时间序列重新索引数据帧

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-

我有一个数据帧(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-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”,并且错误是针对period
freq=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)