pandas와 인덱스의 데이터 프레임 병합
두 개의 데이터 프레임이 있고 각각 두 개의 인덱스 열이 있습니다. 병합하고 싶습니다. 예를 들어 첫 번째 데이터 프레임은 다음과 같습니다.
V1
A 1/1/2012 12
2/1/2012 14
B 1/1/2012 15
2/1/2012 8
C 1/1/2012 17
2/1/2012 9
두 번째 데이터 프레임은 다음과 같습니다.
V2
A 1/1/2012 15
3/1/2012 21
B 1/1/2012 24
2/1/2012 9
D 1/1/2012 7
2/1/2012 16
결과적으로 다음을 얻고 싶습니다.
V1 V2
A 1/1/2012 12 15
2/1/2012 14 N/A
3/1/2012 N/A 21
B 1/1/2012 15 24
2/1/2012 8 9
C 1/1/2012 7 N/A
2/1/2012 16 N/A
D 1/1/2012 N/A 7
2/1/2012 N/A 16
pd.merge
및 .join
방법을 사용하여 몇 가지 버전을 시도 했지만 아무것도 작동하지 않는 것 같습니다. 의견 있으십니까?
join
기본적으로 인덱스에 조인하는 을 사용할 수 있어야합니다 . 원하는 결과가 주어지면 outer
조인 유형으로 사용해야합니다 .
>>> df1.join(df2, how='outer')
V1 V2
A 1/1/2012 12 15
2/1/2012 14 NaN
3/1/2012 NaN 21
B 1/1/2012 15 24
2/1/2012 8 9
C 1/1/2012 17 NaN
2/1/2012 9 NaN
D 1/1/2012 NaN 7
2/1/2012 NaN 16
서명 : _.join (other, on = None, how = 'left', lsuffix = '', rsuffix = '', sort = False) Docstring : 인덱스 또는 키 열에서 다른 DataFrame과 열을 결합합니다. 목록을 전달하여 한 번에 인덱스로 여러 DataFrame 개체를 효율적으로 조인합니다.
You can do this with merge
:
df_merged = df1.merge(df2, how='outer', left_index=True, right_index=True)
The keyword argument how='outer'
keeps all indices from both frames, filling in missing indices with NaN
. The left_index
and right_index
keyword arguments have the merge be done on the indices. If you get all NaN
in a column after doing a merge, another troubleshooting step is to verify that your indices have the same dtypes
.
The merge
code above produces the following output for me:
V1 V2
A 2012-01-01 12.0 15.0
2012-02-01 14.0 NaN
2012-03-01 NaN 21.0
B 2012-01-01 15.0 24.0
2012-02-01 8.0 9.0
C 2012-01-01 17.0 NaN
2012-02-01 9.0 NaN
D 2012-01-01 NaN 7.0
2012-02-01 NaN 16.0
ReferenceURL : https://stackoverflow.com/questions/36538780/merging-dataframes-on-index-with-pandas
'Program Tip' 카테고리의 다른 글
Eclipse가 시작되지 않지만 오류가 표시되지 않습니다. (0) | 2020.12.26 |
---|---|
belongsToMany 관계가 존재하는지 확인-Laravel (0) | 2020.12.26 |
생성기는 재귀적일 수 있습니까? (0) | 2020.12.15 |
Cloud Functions와 Firebase Functions의 차이점은 무엇인가요? (0) | 2020.12.15 |
axios로 기본 인증을 보내는 방법 (0) | 2020.12.15 |