2016-10-17 55 views
5

Hai DataFrames có giá trị phù hợp được lưu trữ trong cột 'tên' và 'chuyến bay' tương ứng. Trong khi các cửa hàng DataFrame đầu tiên khoảng cách các cửa hàng khác các ngày:Làm cách nào để hợp nhất hai DataFrames thành khớp đơn với các giá trị cột

import pandas as pd 

distances = {'names': ['A', 'B','C'] ,'distances':[100, 200, 300]} 
dates = {'flights': ['C', 'B', 'A'] ,'dates':['1/1/16', '1/2/16', '1/3/16']} 

distancesDF = pd.DataFrame(distances) 
datesDF = pd.DataFrame(dates) 

distancesDF:

distances names 
0  100  A 
1  200  B 
2  300  C 

datesDF:

dates flights 
0 1/1/16  A 
1 1/2/16  B 
2 1/3/16  C 

Tôi muốn ghép lại thành Dataframe duy nhất trong một một cách mà các thực thể phù hợp được đồng bộ hóa với khoảng cách và ngày tương ứng. Vì vậy, các DataFame dẫn sẽ trông như thế này:

resultDF:

distances names  dates 
0  100  A 1/1/16 
1  200  B 1/2/16 
2  300  C 1/3/16 

Điều gì sẽ là cách để đạt được nó?

Trả lời

2

Không có gì liên kết các khung dữ liệu này với nhau ngoài chỉ mục vị trí. Bạn có thể đạt sản lượng ví dụ mong muốn của bạn với pd.concat

pd.concat([distancesDF, datesDF.dates], axis=1) 

enter image description here


Để giải quyết những chỉnh sửa và @ bình luận Kartik của

nếu chúng ta tạo ra các dfs để phù hợp với những gì đang hiển thị.

distances = {'names': ['A', 'B','C'] ,'distances':[100, 200, 300]} 
dates = {'flights': ['A', 'B', 'C'] ,'dates':['1/1/16', '1/2/16', '1/3/16']} 

distancesDF = pd.DataFrame(distances) 
datesDF = pd.DataFrame(dates) 

thì hai tùy chọn sau đây sẽ tạo ra kết quả tương tự và có thể mong muốn.

merge

distancesDF.merge(datesDF, left_on='names', right_on='flights')[['distances', 'names', 'dates']] 

tham gia

distancesDF.join(datesDF.set_index('flights'), on='names') 

cả sản xuất

enter image description here

+0

Giải pháp tuyệt vời. Ngắn và đơn giản! Cảm ơn! – alphanumeric

+1

Xin chào! Nhưng cột 'tên' không giống với cột' chuyến bay'? Tôi thà làm một 'hợp nhất', hơn là' concat' ... – Kartik

+0

Kartik, Vui lòng đăng giải pháp của bạn bằng cách sử dụng 'hợp nhất'. – alphanumeric

Các vấn đề liên quan