2017-04-26 3 views
0

오류 및 모든 cols.는 팬더 CONCAT는주기 "InvalidIndexError : 고유 가치 인덱스 오브젝트 만 유효 색인화"</p> <pre><code>pd.concat([df1, df2], 1) </code></pre> <p>최종 결과는 인덱스로 날짜와 수비수 인 내가 사용 결합하려는 나는 두 개의 서로 다른 DFS가

According to pandas documentation이 작동합니다. 그리고 일하고있었습니다. 하지만 지금은 그렇지 않습니다. 왜 그런지 모르겠습니다.

DF1 :

 gbp_open gbp_high gbp_low gbp_close gbp_volume 
date      
2017-03-13 0.8217 0.82246 0.81627 0.8216 000 
2017-03-10 0.8224 0.82366 0.82055 0.82255 000 
2017-03-09 0.82139 0.82364 0.82 0.8212 000 
2017-03-08 0.81943 0.82372 0.8186 0.81937 000 
2017-03-07 0.817 0.82163 0.8163 0.8168 000 
2017-03-06 0.81351 0.81659 0.8132 0.813 000 
2017-03-03 0.8147 0.81854 0.8141 0.81468 000 
2017-03-02 0.81492 0.81561 0.81264 0.81485 000 
2017-03-01 0.80779 0.81402 0.80629 0.80788 000 
2017-02-28 0.80403 0.8059 0.80183 0.8039 000 

그리고 DF2 : 나는 여러 가지 솔루션을 시도했지만 그들 중 누구도 내가 무엇을해야하지

  inr_open inr_high inr_low inr_close inr_volume 
date      
2017-03-13 66.485 66.58 66.11 66.485 000 
2017-03-10 66.71 66.77 66.5398 66.6805 000 
2017-03-09 66.815 66.853 66.60 66.765 000 
2017-03-08 66.625 66.83 66.613 66.6162 000 
2017-03-07 66.645 66.695 66.58 66.6647 000 
2017-03-06 66.71 66.78 66.60 66.773 000 
2017-03-03 66.845 66.885 66.74 66.8451 000 
2017-03-02 66.69 66.858 66.67 66.858 000 
2017-03-01 66.705 66.89 66.7046 66.7051 000 
2017-02-28 66.735 66.808 66.59 66.6932 000 

날짜에 두 가지를 결합이다.

편집 : 이상하게도 다른 데이터 세트에서 똑같은 코드를 사용하고 있지만 문제없이 작동합니다.

편집 2 : 아마도 도움이 될 것입니다. df1.join (df2, how = 'outer')을 사용했는데 정상적으로 작동했습니다. 글쎄 거의입니다. 반복 값을 확인했을 때, 4 개의 날짜가 표시되었습니다 (어제 일 수도 있습니다 - 왜 최근 문제인지 설명 할 것입니다).

어떻게 이것이 문제의 원인이 될 수 있습니까?

xdf.index.value_counts() 

2017-04-24 4 
2016-11-14 1 
2011-03-28 1 
2011-09-19 1 
2011-09-13 1 
2013-12-25 1 
2012-07-12 1 
2011-08-08 1 
2016-11-22 1 

의견이 있으십니까?

+1

이 경우에는 'join'을 사용하는 것이 더 좋습니다. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html – ittus

+0

ignore_index = True를 사용해 보셨습니까? – Vaishali

+0

음, 각 날짜의 데이터를 한 행에 통합하기 때문에 ignore_index가 필요합니다 ... 감사합니다. 여전히 위의 코드가 작동하지 않는 이유를 알고 싶습니다. 설명서에서 직접 해제했습니다! – Zach

답변

0

당신이 편집하는 것은 기본적으로 질문에 대한 답변입니다 : 인덱스는 여러 값을 가지고 있기 때문에 인덱스를 기준으로 연결하려는 경우 인덱스를 정렬하는 방법이 모호하므로 팬더가 발생시킵니다 오류 : 인덱스가 고유 때문에

그래서이 작품 :

df1 = pd.DataFrame(index=[0,1,2],columns=['A'],data=[19.,2.,-4.]) 
df2 = pd.DataFrame(index=[2,1,0],columns=['B'],data=[17.,28.,9.]) 
df3 = pd.concat(objs=[df1,df2],axis=1) 

그러나 당신이 그것을 명확하지 않기 때문에 다음이 같은 오류가 발생합니다 둘 중 어떤 값으로 인덱스 " 1 "은 두 번째 데이터 프레임에서 값"1 "을 가진 인덱스와 정렬되어야합니다 :

df3 = pd.DataFrame(index=[1,0,1],columns=['A'],data=[19.,2.,-4.]) 
df4 = pd.DataFrame(index=[0,1,1],columns=['B'],data=[17.,28.,9.]) 
df5 = pd.concat(objs=[df3,df4],axis=1) 

df5를 실행하면 InvalidIndexError : Reindexing이 발견되는 고유 한 인덱스 개체에서만 유효합니다.