[PYTHON] 판다 연결 : ValueError : 전달 된 값의 형태는 ㅋ, 색인은 blah2를 의미합니다.
PYTHON판다 연결 : ValueError : 전달 된 값의 형태는 ㅋ, 색인은 blah2를 의미합니다.
나는 (팬더 14.1) 데이터 프레임과 시리즈를 병합하려고합니다. 시리즈는 일부 NAs와 함께 새로운 열을 형성해야합니다 (계열의 인덱스 값은 데이터 프레임의 인덱스 값의 서브 세트이므로).
이것은 장난감 예제에 대해서는 작동하지만 내 데이터에는 적용되지 않습니다 (아래에 설명 됨).
예:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6, 4), columns=['A', 'B', 'C', 'D'], index=pd.date_range('1/1/2011', periods=6, freq='D'))
df1
A B C D
2011-01-01 -0.487926 0.439190 0.194810 0.333896
2011-01-02 1.708024 0.237587 -0.958100 1.418285
2011-01-03 -1.228805 1.266068 -1.755050 -1.476395
2011-01-04 -0.554705 1.342504 0.245934 0.955521
2011-01-05 -0.351260 -0.798270 0.820535 -0.597322
2011-01-06 0.132924 0.501027 -1.139487 1.107873
s1 = pd.Series(np.random.randn(3), name='foo', index=pd.date_range('1/1/2011', periods=3, freq='2D'))
s1
2011-01-01 -1.660578
2011-01-03 -0.209688
2011-01-05 0.546146
Freq: 2D, Name: foo, dtype: float64
pd.concat([df1, s1],axis=1)
A B C D foo
2011-01-01 -0.487926 0.439190 0.194810 0.333896 -1.660578
2011-01-02 1.708024 0.237587 -0.958100 1.418285 NaN
2011-01-03 -1.228805 1.266068 -1.755050 -1.476395 -0.209688
2011-01-04 -0.554705 1.342504 0.245934 0.955521 NaN
2011-01-05 -0.351260 -0.798270 0.820535 -0.597322 0.546146
2011-01-06 0.132924 0.501027 -1.139487 1.107873 NaN
데이터 (아래 참조)의 상황은 기본적으로 동일합니다. DatetimeIndex와 시리즈를 연결하면 그 값은 데이터 프레임의 하위 집합입니다. 그러나 제목에 ValueError를 제공합니다 (blah1 = (5, 286) blah2 = (5, 276)). 왜 작동하지 않습니까? :
In[187]: df.head()
Out[188]:
high low loc_h loc_l
time
2014-01-01 17:00:00 1.376235 1.375945 1.376235 1.375945
2014-01-01 17:01:00 1.376005 1.375775 NaN NaN
2014-01-01 17:02:00 1.375795 1.375445 NaN 1.375445
2014-01-01 17:03:00 1.375625 1.375515 NaN NaN
2014-01-01 17:04:00 1.375585 1.375585 NaN NaN
In [186]: df.index
Out[186]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-01 17:00:00, ..., 2014-01-01 21:30:00]
Length: 271, Freq: None, Timezone: None
In [189]: hl.head()
Out[189]:
2014-01-01 17:00:00 1.376090
2014-01-01 17:02:00 1.375445
2014-01-01 17:05:00 1.376195
2014-01-01 17:10:00 1.375385
2014-01-01 17:12:00 1.376115
dtype: float64
In [187]:hl.index
Out[187]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-01 17:00:00, ..., 2014-01-01 21:30:00]
Length: 89, Freq: None, Timezone: None
In: pd.concat([df, hl], axis=1)
Out: [stack trace] ValueError: Shape of passed values is (5, 286), indices imply (5, 276)
해결법
-
==============================
1.비슷한 문제가 있었지만 (연계 작업은했지만 연계 작업은 실패했습니다)
비슷한 문제가 있었지만 (연계 작업은했지만 연계 작업은 실패했습니다)
df1 및 s1에 중복 색인 값이 있는지 확인하십시오 (예 : df1.index.is_unique).
중복 색인 값 (예 : df.drop_duplicates (inplace = True))을 삭제하거나 여기에서 https://stackoverflow.com/a/34297689/7163376의 메소드 중 하나를 해결해야합니다.
-
==============================
2.내 문제가 어디 다른 색인, 다음 코드는 내 문제를 해결.
내 문제가 어디 다른 색인, 다음 코드는 내 문제를 해결.
df1.reset_index(drop=True, inplace=True) df2.reset_index(drop=True, inplace=True) df = pd.concat([df1, df2], axis=1)
-
==============================
3.Aus_lacy의 게시물은 나에게 관련 메소드 시도에 대한 아이디어를주었습니다.
Aus_lacy의 게시물은 나에게 관련 메소드 시도에 대한 아이디어를주었습니다.
In [196]: hl.name = 'hl' Out[196]: 'hl' In [199]: df.join(hl).head(4) Out[199]: high low loc_h loc_l hl 2014-01-01 17:00:00 1.376235 1.375945 1.376235 1.375945 1.376090 2014-01-01 17:01:00 1.376005 1.375775 NaN NaN NaN 2014-01-01 17:02:00 1.375795 1.375445 NaN 1.375445 1.375445 2014-01-01 17:03:00 1.375625 1.375515 NaN NaN NaN
concat이 예제에서 작동하지만이 데이터가 아닌 이유에 대한 통찰력은 좋을 것입니다!
-
==============================
4.색인에 중복 값이 포함되어있을 수 있습니다.
색인에 중복 값이 포함되어있을 수 있습니다.
import pandas as pd T1_INDEX = [ 0, 1, # <= !!! if I write e.g.: "0" here then it fails 0.2, ] T1_COLUMNS = [ 'A', 'B', 'C', 'D' ] T1 = [ [1.0, 1.1, 1.2, 1.3], [2.0, 2.1, 2.2, 2.3], [3.0, 3.1, 3.2, 3.3], ] T2_INDEX = [ 1.2, 2.11, ] T2_COLUMNS = [ 'D', 'E', 'F', ] T2 = [ [54.0, 5324.1, 3234.2], [55.0, 14.5324, 2324.2], # [3.0, 3.1, 3.2], ] df1 = pd.DataFrame(T1, columns=T1_COLUMNS, index=T1_INDEX) df2 = pd.DataFrame(T2, columns=T2_COLUMNS, index=T2_INDEX) print(pd.concat([pd.DataFrame({})] + [df2, df1], axis=1))
-
==============================
5.색인을 연결 한 후 정렬을 시도하십시오.
색인을 연결 한 후 정렬을 시도하십시오.
result=pd.concat([df1,df2]).sort_index()
from https://stackoverflow.com/questions/27719407/pandas-concat-valueerror-shape-of-passed-values-is-blah-indices-imply-blah2 by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 모듈이 설치되어 있지 않은지 확인하십시오. (0) | 2018.11.14 |
---|---|
[PYTHON] 아나콘다가`pip`로 설치된 패키지를 찾지 못했습니다. (0) | 2018.11.14 |
[PYTHON] PDF를 이미지로 변환 할 권한이없는 ImageMagick (0) | 2018.11.14 |
[PYTHON] 파이썬에서 os.makedirs로 dir을 만들 때 사용 권한 문제 (0) | 2018.11.14 |
[PYTHON] 하위 클래스에서 모든 인수를 지정하지 마십시오. (0) | 2018.11.14 |