重新采样时间序列 - Python

Resample time series - Python

我正在尝试对时间序列重新采样。我似乎无法让它工作。基于其他示例,我不明白为什么这不返回时间序列:

df1 = pd.DataFrame({'Time': ['2019-08-02 09:50:10.100','2019-08-02 09:50:10.200','2019-08-02 09:50:10.400''2019-08-02 09:50:10.100','2019-08-02 09:50:10.200','2019-08-02 09:50:10.400'], 
                   'Object': ['A','A','A','B','B','B'],
                    })

df1['Time'] = pd.to_datetime(df1['Time'])

df1 = df1.set_index(['Time']).resample('100ms')

print(df1)

输出:

DatetimeIndexResampler [freq=<100 * Millis>, axis=0, closed=left, label=left, convention=start, base=0]

预期输出:

                     Time Object
0 2019-08-02 09:50:10.100      A
1 2019-08-02 09:50:10.200      A
2 2019-08-02 09:50:10.300      Nan
3 2019-08-02 09:50:10.400      A
4 2019-08-02 09:50:10.100      B
5 2019-08-02 09:50:10.200      B
6 2019-08-02 09:50:10.300      Nan
7 2019-08-02 09:50:10.400      B

我相信你想做的是:

df1['Time'] = pd.to_datetime(df1['Time'])

df1.set_index(['Time'], inplace = True)
df1.groupby("Object").resample("100ms").asfreq()

输出为:

                               Object
Object Time                          
A      2019-08-02 09:50:10.100      A
       2019-08-02 09:50:10.200      A
       2019-08-02 09:50:10.300    NaN
       2019-08-02 09:50:10.400      A
B      2019-08-02 09:50:10.100      B
       2019-08-02 09:50:10.200      B
       2019-08-02 09:50:10.300    NaN
       2019-08-02 09:50:10.400      B

如果您愿意,现在可以删除第一级索引:

df1 = df1.groupby("Object").resample("100ms").asfreq()
df1.index = df1.index.droplevel(0)

输出:

                        Object
Time                          
2019-08-02 09:50:10.100      A
2019-08-02 09:50:10.200      A
2019-08-02 09:50:10.300    NaN
2019-08-02 09:50:10.400      A
2019-08-02 09:50:10.100      B
2019-08-02 09:50:10.200      B
2019-08-02 09:50:10.300    NaN
2019-08-02 09:50:10.400      B