IT

인덱스의 데이터 프레임과 팬더의 데이터

itgroup 2023. 9. 10. 12:08
반응형

인덱스의 데이터 프레임과 팬더의 데이터

저는 두 개의 데이터 프레임을 가지고 있고 각각은 두 개의 인덱스 열을 가지고 있습니다.저는 그것들을 병합하고 싶습니다.예를 들어 첫 번째 데이터 프레임은 다음과 같습니다.

                   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    17  N/A
       2/1/2012     9  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

시그니처: _.junction(기타, on=Modice, how='left', lsuffix=', rsuffix=', sort=Modice) Docstring: 인덱스 또는 키 열에 다른 DataFrame 열을 결합합니다.목록을 통과하여 인덱스별로 여러 DataFrame 개체를 한 번에 효율적으로 결합합니다.

다음을 사용하여 이 작업을 수행할 수 있습니다.

df_merged = df1.merge(df2, how='outer', left_index=True, right_index=True)

키워드 인수how='outer'두 프레임의 모든 인덱스를 유지하고 결측 인덱스를 다음과 같이 채웁니다.NaN.그left_index그리고.right_index키워드 인수는 인덱스에 대해 병합을 수행합니다.만약 당신이 모두를 얻는다면NaN병합을 수행한 후 열에서 다른 문제 해결 단계는 인덱스가 동일한지 확인하는 것입니다.dtypes.

merge위의 코드는 저를 위해 다음과 같은 출력을 생성합니다.

                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

수평으로 연결할 수도 있습니다.부터concat인덱스와 일치하며 기본적으로 외부 조인을 수행하며, 단순히 전달합니다.axis=1연결이 수평 충분함을 지정하는 인수입니다.

joined_df = pd.concat([df1, df2], axis=1)

의 장점concat위에merge그리고.join1 데이터 프레임 목록을 통과하여 많은 프레임을 한 번에 연결할 수 있습니다.

joined_df = pd.concat([df1, df2, df1, df2], axis=1)

1 할 수 있습니다.join그러나 중복되는 컬럼 이름이 있다면, 그것들은 그 전에 처리되어야 합니다.join전화를 걸지만, 전화를 건다concat,그건 중요하지 않아.

언급URL : https://stackoverflow.com/questions/36538780/merging-dataframes-on-index-with-pandas

반응형