두 데이터 프레임을 결합하려면 어떻게합니까?


105

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

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

그런 다음 레이블을 변경 A하고B

A.label = 1
B.label = -1

A와 B를 결합하여 통합 연산과 같은 하나의 데이터 프레임으로 만들 수 있습니다. 데이터의 순서는 중요하지 않습니다. 그러나 D에서 A와 B를 샘플링하면 D에서 인덱스를 유지합니다.

답변:


148

나는 당신이 append방법을 사용할 수 있다고 믿습니다

bigdata = data1.append(data2, ignore_index=True)

색인을 유지하려면 ignore_index키워드를 사용하지 마십시오 ...


1
작동합니다. 그래도 새 DataFrame을 만듭니다. 인라인으로 수행하는 방법이 있습니까? 매번 복사본을 만들지 않고 DataFrame을 반복적으로 업데이트 할 수 있도록 데이터베이스에서 대량의 데이터를 일괄 적으로로드 할 때 유용합니다.
Andrew


91

를 사용할 수도 있습니다 pd.concat. 이는 세 개 이상의 데이터 프레임을 결합 할 때 특히 유용합니다.

bigdata = pd.concat([data1, data2], ignore_index=True, sort=False)

이걸 사용하고 싶지만 같은 이름의 두 열을 연결하려고합니다 o_O
lifelonglearner

45

누군가 유용하다고 생각되면 여기에 추가하려고 생각했습니다. @ostrokach는 이미 행간에 데이터 프레임을 병합하는 방법을 언급했습니다.

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

여러 열을 병합하려면 다음 구문을 사용할 수 있습니다.

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

14

빅 데이터로 작업하고 여러 데이터 세트를 연결해야하는 경우에 대한 또 다른 솔루션이 있습니다. concat성능 집약적 일 수 있으므로 매번 새로운 df를 생성하지 않으려면 대신 list comprehension을 사용할 수 있습니다 .

frames = [ process_file(f) for f in dataset_files ]
result = pd.append(frames)

( 섹션 하단의 문서 에서 지적한대로 ) :

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


2

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

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

df1.set_index('id')

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

df2.set_index('id')

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

df1.update(df2)

0

첫 번째 dataFrame

train.shape

결과:-

(31962, 3)

두 번째 dataFrame

test.shape

결과:-

(17197, 2)

결합시키다

new_data=train.append(test,ignore_index=True)

검사

new_data.shape

결과:-

(49159, 3)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.