我有兩個熊貓資料框:
import pandas as pd
df1 = pd.DataFrame({'id': [101, 102, 103, 104, 105, 106],
'code': [1, 2, 3, 4, 5, 2],
'address_name':['ESPLANADA DOM CARLOS',
'CHAMP DE MARS 5 AV ANATOLE',
'PARQUE NACIONAL DA TIJUCA',
'C D ARISTIDES MAILLOL',
'CHAMP DE MARS 5 AV ANATOLE',
'CHAMP DE MARS 5 AV ANATOLE']})
print(df1)
id code address_name
101 1 ESPLANADA DOM CARLOS
102 2 CHAMP DE MARS 5 AV ANATOLE
103 3 PARQUE NACIONAL DA TIJUCA
104 4 C D ARISTIDES MAILLOL
105 5 CHAMP DE MARS 5 AV ANATOLE
106 2 CHAMP DE MARS 5 AV ANATOLE
df2 = pd.DataFrame({'cod': [5, 2, 1],
'population': [6748, 6748, 504],
'address':['PARQUE NACIONAL DA TIJUCA',
'CHAMP DE MARS 5 AV ANATOLE',
'ESPLANADA DOM CARLOS']})
print(df2)
cod population address
5 6748 PARQUE NACIONAL DA TIJUCA
2 6748 CHAMP DE MARS 5 AV ANATOLE
1 504 ESPLANADA DOM CARLOS
我想在df_1的'address_name'等于df2的'address'并且df2的'code'與df2的'cod'相同的資料幀之間進行連接。如果兩者都是真的,那么我想在一個新列中保存發生這種情況的 'id' 是什么。
我嘗試使用 merge() 實作以下代碼:
pd.merge(df2, df1[['address_name', 'code']], left_on="address", right_on="address_name", how='left')
(錯誤的)輸出是:
cod population address address_name code
5 6748 PARQUE NACIONAL DA TIJUCA PARQUE NACIONAL DA TIJUCA 3
2 6748 CHAMP DE MARS 5 AV ANATOLE CHAMP DE MARS 5 AV ANATOLE 2
2 6748 CHAMP DE MARS 5 AV ANATOLE CHAMP DE MARS 5 AV ANATOLE 5
2 6748 CHAMP DE MARS 5 AV ANATOLE CHAMP DE MARS 5 AV ANATOLE 2
1 504 ESPLANADA DOM CARLOS ESPLANADA DOM CARLOS 1
我希望輸出為:
cod population address address_name code id
2 6748 CHAMP DE MARS 5 AV ANATOLE CHAMP DE MARS 5 AV ANATOLE 2 [102,106]
1 504 ESPLANADA DOM CARLOS ESPLANADA DOM CARLOS 1 [101]
uj5u.com熱心網友回復:
merge在兩列和groupby除“id”之外的所有列上,并創建一個“id”串列:
merged_df = df1.merge(df2, left_on=['address_name','code'], right_on=['address','cod'])
out = merged_df.groupby(merged_df.drop('id', axis=1).columns.tolist())['id'].apply(list).reset_index()
輸出:
code address_name cod population address
0 1 ESPLANADA DOM CARLOS 1 504 ESPLANADA DOM CARLOS [101]
1 2 CHAMP DE MARS 5 AV ANATOLE 2 6748 CHAMP DE MARS 5 AV ANATOLE [102, 106]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417956.html
標籤:
下一篇:R多個正則運算式,資料框列名
