팬더를 사용하여 매우 이상한 문제에 직면하고 있습니다.pandas 시계열 및 산수화
저는 팬더 시계열을 가지고 있습니다. 파이썬 표준 도구를 사용하여 피클 링하지만 피킹 해제 할 때 팬더는 개체를 다시 작성하지 못하고 인덱스가 잘못되었음을 pretexing합니다.
피클 링 팬더 데이터 구조에 문제가 있습니까? 그것을하는 선호 한 방법? 내가 계획하고있는 방식에 문제가 있습니까?
여기에 세부 사항은 다음과 같습니다
좀 처리 후 재사용 속도 향상을 위해, 피클 파일로 보관하고자하는 데이터라는 시간이 시리즈를 보유하고 있습니다. 내 시간이 시리즈는 다음과 같다 :
sample_time
2013-06-03 21:55:40 0.553846
2013-06-03 22:13:25 0.569231
...
2013-07-09 16:55:00 0.430769
2013-07-09 16:57:45 0.430769
2013-07-09 16:59:44 0.384615
Name: fill, Length: 11550
나는이 같은 시리즈 개체 피클 :
pickle.dump(data,open("pickle_file","w"))
를하고 나중에 다시 시도 :
data_back=pickle.load(open("pickle_file",'r'))
난 후 다음과 같은 오류가 :
Traceback (most recent call last):
File "/home/antoine/velib/code/project_tools.py", line 197, in <module>
test()
File "/home/antoine/velib/code/project_tools.py", line 172, in test
data_back=p_l(open("test_dump",'r'))
File "/home/antoine/program/anaconda/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/home/antoine/program/anaconda/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/home/antoine/program/anaconda/lib/python2.7/pickle.py", line 1217, in load_build
setstate(state)
File "/home/antoine/program/anaconda/lib/python2.7/site-packages/pandas/core/internals.py", line 2063, in __setstate__
placement=self.axes[0].get_indexer(items))
File "/home/antoine/program/anaconda/lib/python2.7/site-packages/pandas/core/index.py", line 1259, in get_indexer
raise InvalidIndexError('Reindexing only valid with uniquely'
pandas.core.index.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
Pa ndas는 시리즈를 다시 작성하기를 거부하여 색인이 고유하지 않을 수 있음을 알았습니다. 그러나 시계열 datetime 인덱스는 고유해야합니다. 증명 : 데이터 색인에서 세리에를 만들면 중복이 없습니다.
데이터 색인 만 들어있는 새 세리를 만듭니다.
data_index=pd.DataFrame(data=data.index)
data_index["dup"]=data_index.duplicated()
data_index
sample_time dup
0 2013-06-03 21:55:40 False
1 2013-06-03 22:13:25 False
2 2013-06-03 22:19:21 False
... ... ...
11547 2013-07-09 16:55:00 False
11548 2013-07-09 16:57:45 False
11549 2013-07-09 16:59:44 False
[11550 rows x 2 columns]
그래서 나를 위해 시간 색인에는 문제가 없습니다. 그것은 고유합니다. 데이터 시간 세리에는 처음 존재하기 때문에 합법적 인 것으로 보입니다. 그러나 산 세척과 unpickling의 과정에서, 팬더는 시간 세리에 다시 빌드를 거부합니다.
버그 일 수 있습니까?
어떤 버전의 팬더인가요? – Jeff
버전을 넘는 경우 특히 내장 된 피클 지원을 사용해야합니다. http://pandas.pydata.org/pandas-docs/dev/io.html#io-pickle – Jeff
버그 (마스터에서 수정 됨)가 있었고, 여기를 참조하십시오 : https://github.com/pydata/pandas/pull/7794; 중복이있는 경우에만 표시됩니다. – Jeff