두 판다 데이터 프레임 결합(공통 열에 결합)
2개의 데이터 프레임이 있습니다.
레스토랑_ids_데이터프레임
Data columns (total 13 columns):
business_id 4503 non-null values
categories 4503 non-null values
city 4503 non-null values
full_address 4503 non-null values
latitude 4503 non-null values
longitude 4503 non-null values
name 4503 non-null values
neighborhoods 4503 non-null values
open 4503 non-null values
review_count 4503 non-null values
stars 4503 non-null values
state 4503 non-null values
type 4503 non-null values
dtypes: bool(1), float64(3), int64(1), object(8)`
그리고.
레스토랑_리뷰_프레임
Int64Index: 158430 entries, 0 to 229905
Data columns (total 8 columns):
business_id 158430 non-null values
date 158430 non-null values
review_id 158430 non-null values
stars 158430 non-null values
text 158430 non-null values
type 158430 non-null values
user_id 158430 non-null values
votes 158430 non-null values
dtypes: int64(1), object(7)
저는 이 두 개의 데이터 프레임을 결합하여 판다에서 DataFrame.join() 명령을 사용하여 하나의 데이터 프레임으로 만들고 싶습니다.
다음 코드 라인을 사용해 보았습니다.
#the following line of code creates a left join of restaurant_ids_frame and restaurant_review_frame on the column 'business_id'
restaurant_review_frame.join(other=restaurant_ids_dataframe,on='business_id',how='left')
그러나 이 작업을 시도하면 다음 오류가 발생합니다.
Exception: columns overlap: Index([business_id, stars, type], dtype=object)
저는 판다가 매우 생소하며 가입 성명서를 실행하는 것에 관한 한 제가 무엇을 잘못하고 있는지 전혀 모릅니다.
어떤 도움이라도 주시면 감사하겠습니다.
병합을 사용하여 두 데이터 프레임을 하나로 결합할 수 있습니다.
import pandas as pd
pd.merge(restaurant_ids_dataframe, restaurant_review_frame, on='business_id', how='outer')
여기서 on은 조인할 두 데이터 프레임에 존재하는 필드 이름을 지정하고, 에서는 '두 프레임에서 키의 결합(SQL: 전체 외부 조인)'을 사용하여 외부와 결합할 내부/외부/좌/우 결합 여부를 정의합니다.두 데이터 프레임 모두에 'star' 열이 있으므로 결합된 데이터 프레임에는 기본적으로 star_x 및 star_y 열이 두 개 생성됩니다.@DanAllan이 조인 방법에 대해 언급했듯이 kwarg로 전달하여 병합할 접미사를 수정할 수 있습니다.기본값은 입니다.suffixes=('_x', '_y')
만약 당신이 그런 것을 하고 싶다면.star_restaurant_id
그리고.star_restaurant_review
할 수 있는 일:
pd.merge(restaurant_ids_dataframe, restaurant_review_frame, on='business_id', how='outer', suffixes=('_restaurant_id', '_restaurant_review'))
매개 변수는 이 링크에 자세히 설명되어 있습니다.
데이터 프레임에 공통 열 이름이 있으면 가입이 실패합니다.가장 간단한 방법은 다음을 포함하는 것입니다.lsuffix
또는rsuffix
다음과 같은 키워드:
restaurant_review_frame.join(restaurant_ids_dataframe, on='business_id', how='left', lsuffix="_review")
이렇게 하면 열 이름이 구분됩니다.설명서는 바로 이 문제를 해결합니다.
또는 가입하기 전에 문제가 되는 열을 삭제하면 이 문제를 해결할 수 있습니다.예를 들어, 별들이restaurant_ids_dataframe
에 있는 별들에게 불필요합니다.restaurant_review_frame
당신은 할 수 있습니다del restaurant_ids_dataframe['stars']
.
다른 열 대신 인덱스에서 두 개의 데이터 프레임을 함께 병합해야 하는 경우에도 효과적입니다.
T1 및 T2는 동일한 인덱스를 가진 데이터 프레임입니다.
import pandas as pd
T1 = pd.merge(T1, T2, on=T1.index, how='outer')
추신: append가 불필요하게 NaNs를 채울 것이기 때문에 merge를 사용해야 했습니다.
두 개의 데이터 프레임을 수평으로 병합하려는 경우 다음 코드를 사용합니다.
df3 = pd.concat([df1, df2],axis=1, ignore_index=True, sort=False)
언급URL : https://stackoverflow.com/questions/18792918/combine-two-pandas-data-frames-join-on-a-common-column
'programing' 카테고리의 다른 글
Kotlin Android에서 데이터 클래스용 빈 생성자를 만드는 방법 (0) | 2023.08.29 |
---|---|
오라클에서 dbms_lock에 대한 실행을 허용하는 방법은 무엇입니까? (0) | 2023.08.29 |
최대 절전 모드에서 시퀀스를 사용할 때 고유한 제약 조건 위반이 발생하는 이유는 무엇입니까? (0) | 2023.08.29 |
Microsoft 사용 방법jQuery.방해가 되지 않는.아약스 with libman (라이브러리 매니저) asp.net 코어 2.1? (0) | 2023.08.29 |
MySQL에서 NULL을 기준으로 주문 (0) | 2023.08.29 |