我有一个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:无法使用方法或限制
重新索引非唯一索引任何人都知道如何处理此问题和/或如何拆分周期性数据?
答案 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')
?