熊猫:使用asfreq

时间:2016-07-13 19:48:11

标签: python pandas time-series data-analysis

我有一个mm:ss.0格式的循环时间序列,看起来像

59:58.5
59:58.7
59:59.1
00:00.0
00:00.1
00:00.2

(重复一段时间没有小时标记,即持续约五或六小时)

我想要的是将整个系列分成30秒的间隔,最好使用asfreq。这看起来像是一个由两部分组成的问题:首先,我需要将时间段分成30秒的间隔,这比我没有小时标签的情况要难得多(有没有一种简单的方法可以在Excel中添加它? )。接下来,我需要实际使用asfreq将数据拆分为30秒的频率。

为简单起见,我花了1个小时的数据样本编写了一个测试程序,尝试将该子集分成30秒的间隔。

我的数据类似于

0:00:05.2   46
0:00:05.3   46
0:00:05.9   46
0:00:06.0   46
0:00:06.1   46
0:00:06.4   47
0:00:06.9   47

我的代码是

df = pd.read_csv('test_file.csv',index_col=0)
df.index = pd.to_datetime(df.index,format='%M:%S.%f')
df.index.get_duplicates()
df.Data = df.Data.asfreq(str(30)+'S',method='pad')

我一直在犯的错误是     ValueError:无法使用方法或限制

重新索引非唯一索引

任何人都知道如何处理此问题和/或如何拆分周期性数据?

1 个答案:

答案 0 :(得分:0)

如果您只想将其拆分,请使用groupby。然后,每个组仅保留该组的数据。

grouped = df.groupby(<time column or index>)
for name, group in grouped:
    print(name, group)

您收到上述错误的原因是索引中存在非唯一值。 Pandas将如何确定哪一个值适用于您的行中的哪个索引:df.Data = df.Data.asfreq(str(30)+'S',method='pad')