|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求助各位爸爸!!!!!真的很急嘤嘤嘤
以下是一段代码
import pandas as pd
import datetime as dt
import pickle
import tarfile
#定义一个可以读取spydata文件的函数
def read_spydata(filename):
tar = tarfile.open(filename, "r")
tar.extractall()
extracted_files = tar.getnames()
for f in extracted_files:
if f.endswith('.pickle'):
with open(f, 'rb') as fdesc:
data = pickle.loads(fdesc.read())
return data
def add_microsecond(series):
num = len(series.index)
gap = dt.timedelta(seconds=0.001)/num
time_delta = pd.Series(range(num),index=series.index)
time_delta = time_delta.apply(lambda x:x*gap+dt.timedelta(seconds=0.000001))
series = series + time_delta
return series
dict1 = read_spydata('20181221.spydata')
df_Data = dict1['df_Data']
time1 = pd.to_datetime(df_Data.date.values,format="%Y-%m-%d %H:%M:%S.%f")
time1_series = pd.Series(time1,index=time1)
#如果是a = time1_series.groupby(level=0).apply(add_microsecond)就会报错
a = time1_series[406:7609].groupby(level=0).apply(add_microsecond)#这样就不会报错
我的疑惑就在最后一行。如果没有[406:7609]的话程序就会报错,但是这个是我手动发现的,如果以后数据文件换了一个新的我可能还要手动去找,非常的麻烦。有没有大神帮看一下怎么样对series做一下预处理,保证以后无论series换成什么,经过处理以后都可以直接groupby然后apply呢。.spydata文件我放在附件里了,可以供大神们参考。
问题主要在下面的这个函数
- def add_microsecond(series):
- num = len(series.index)
- gap = dt.timedelta(seconds=0.001)/num
- time_delta = pd.Series(range(num),index=series.index)
- time_delta = time_delta.apply(lambda x:x*gap+dt.timedelta(seconds=0.000001))
- series = series + time_delta
- return series
复制代码
我通过打印观察过,当你的这个文件中的到了 2013-07-10 15:00:29就会报错。
但不知道是由于什么导致这里的轴会重复。
|
|