[PYTHON] 새로운 다중 색인 수준에서 팬더 열 연결
PYTHON새로운 다중 색인 수준에서 팬더 열 연결
주어진 데이터 프레임 사전 :
dict = {'ABC': df1, 'XYZ' : df2} # of any length...
각 데이터 프레임은 동일한 열과 유사한 인덱스를 갖습니다. 예를 들면 다음과 같습니다.
data Open High Low Close Volume
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149
모든 데이터 프레임을 하나로 결합하는 가장 간단한 방법은 다음과 같습니다.
symbol ABC XYZ
data Open High Low Close Volume Open ...
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833 ...
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866 ...
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149 ...
몇 가지 방법을 시도했습니다. 예를 들어, 각 데이터 프레임에 대해 .from_product ([ 'ABC', columns])와 같은 다중 인덱스로 열을 대체 한 다음 축없이 축 1을 따라 연결합니다.
해결법
-
==============================
1.당신은 concat (keys 인자는 계층 적 컬럼 인덱스를 생성 할 것입니다)로 그것을 할 수 있습니다 :
당신은 concat (keys 인자는 계층 적 컬럼 인덱스를 생성 할 것입니다)로 그것을 할 수 있습니다 :
d = {'ABC' : df1, 'XYZ' : df2} print pd.concat(d.values(), axis=1, keys=d.keys()) XYZ ABC \ Open High Low Close Volume Open High Date 2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833 0.18077 0.18800 2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866 0.18439 0.21331 2002-01-21 0.19523 0.20970 0.19162 0.20608 771149 0.19523 0.20970 Low Close Volume Date 2002-01-17 0.16993 0.18439 1720833 2002-01-18 0.18077 0.19523 2027866 2002-01-21 0.19162 0.20608 771149
정말로 concat은 목록을 원하므로 다음은 동일합니다.
print(pd.concat([df1, df2], axis=1, keys=['ABC', 'XYZ']))
-
==============================
2.데이터 프레임에 심볼 열을 추가하고 심볼 열을 포함하도록 인덱스를 설정하고 연결하여 해당 레벨을 언 스택합니다.
데이터 프레임에 심볼 열을 추가하고 심볼 열을 포함하도록 인덱스를 설정하고 연결하여 해당 레벨을 언 스택합니다.
다음은 사용자의 dict에 DataFrames만큼 많은 기호가 있다고 가정하고 dict 키의 순서에 따라 기호의 순서가 원하는지 확인합니다.
DF_dict = {'ABC': df1, 'XYZ' : df2} dict_keys = DF_dict.keys() symbols = ['ABC', 'ZXY'] for x in xrange(len(symbols)): DF_dict[dict_keys[x]]['symbol'] = symbols[x] DF_dict[dict_keys[x]].reset_index(inplace = True) DF_dict[dict_keys[x]].set_index(['symbol', 'Date'], inplace = True) DF = pd.concat(DF_dict[df] for df in dict_keys) DF = DF.unstack('symbol')
나는 그것이 내가 취할 접근법이라고 생각한다. 어떤 사람들은 내부 구문에 위배됩니다. 여기서는 편리함으로 만 사용합니다.
from https://stackoverflow.com/questions/23600582/concatenate-pandas-columns-under-new-multi-index-level by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Python Elementtree로 XMLNS 속성에 액세스 하시겠습니까? (0) | 2018.11.08 |
---|---|
[PYTHON] Jupyter의 인라인 애니메이션 (2) | 2018.11.08 |
[PYTHON] 하위 프로세스에서 환경을 얻는 방법? (0) | 2018.11.08 |
[PYTHON] 런타임에 Kivy에서 내 위젯의 색상을 어떻게 변경합니까? (0) | 2018.11.08 |
[PYTHON] 다른 파일의 변수를 사용하는 Python (0) | 2018.11.08 |