개발/Python

[파이썬] 두 개의 데이터 프레임을 결합하는 방법?

MinorMan 2022. 12. 7. 20:28
반응형

<질문>

초기 데이터 프레임이 있습니다.D. 다음과 같이 두 개의 데이터 프레임을 추출합니다.

A = D[D.label == k]
B = D[D.label != k]

나는 결합하고 싶다A그리고B하나의 DataFrame으로. 데이터의 순서는 중요하지 않습니다. 그러나 샘플을 만들 때A그리고B~에서D, 그들은 인덱스를 유지합니다D.


<답변1>

지원 중단됨: DataFrame.append 및 Series.append는 v1.4.0에서 지원 중단되었습니다.

사용append:

df_merged = df1.append(df2, ignore_index=True)

인덱스를 유지하려면 다음을 설정하십시오.ignore_index=False.


<답변2>

사용pd.concat여러 데이터 프레임을 결합하려면:

df_merged = pd.concat([df1, df2], ignore_index=True, sort=False)

<답변3>

행 병합:

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

여러 열 병합:

df_col_merged = pd.concat([df_a, df_b], axis=1)

<답변4>

빅 데이터로 작업 중이고 호출하는 여러 데이터 세트를 연결해야 하는 경우concat여러 번 성능 집약적일 수 있습니다.

매번 새 df를 생성하지 않으려면 대신 변경 사항을 집계하고 호출할 수 있습니다.concat한 번만:

frames = [df_A, df_B]  # Or perform operations on the DFs
result = pd.concat(frames)

이것은 아래의 pandas 문서에서 지적됩니다.concatenating objects섹션 하단에 있음):

참고: 그러나 concat(및 추가)은 데이터의 전체 복사본을 만들고 이 함수를 지속적으로 재사용하면 상당한 성능 저하가 발생할 수 있다는 점에 유의할 가치가 있습니다. 여러 데이터 세트에 대해 작업을 사용해야 하는 경우 목록 이해를 사용합니다.


<답변5>

첫 번째 데이터 프레임의 값을 업데이트/바꾸려는 경우df1두 번째 데이터 프레임의 값으로df2. 다음 단계에 따라 수행할 수 있습니다.

1 단계:첫 번째 데이터 프레임(df1)의 인덱스 설정

df1.set_index('id')

2 단계:두 번째 데이터 프레임(df2)의 인덱스 설정

df2.set_index('id')

마지막으로 다음 스니펫을 사용하여 데이터 프레임을 업데이트합니다.

df1.update(df2)

<답변6>

인덱스를 조인 키로 사용하여 2개의 pandas 데이터 프레임을 열로 조인하려면 다음을 수행하십시오.

both = a.join(b)

그리고 여러 DataFrames, Series 또는 이들의 혼합을 인덱스로 조인하려면 다음과 같이 목록에 넣으십시오.

everything = a.join([b, c, d])

pandas 문서를 참조하십시오.DataFrame.join().


<답변7>

# collect excel content into list of dataframes
data = []
for excel_file in excel_files:
    data.append(pd.read_excel(excel_file, engine="openpyxl"))

# concatenate dataframes horizontally
df = pd.concat(data, axis=1)
# save combined data to excel
df.to_excel(excelAutoNamed, index=False)

가로로 추가할 때 위와 같이 시도할 수 있습니다! 이것이 도움이 되길 바랍니다.


<답변8>

이 코드를 사용하여 두 개의 Pandas 데이터 프레임을 수평으로 연결합니다.

df3 = pd.concat([df1, df2],axis=1, ignore_index=True, sort=False)

두 프레임을 병합하려는 축을 중심으로 지정해야 합니다.

반응형