Program Tip

pandas와 인덱스의 데이터 프레임 병합

programtip 2020. 12. 15. 19:47
반응형

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

반응형