我有七個資料框,每個資料框有數百行(不要問),我需要在列上組合它們。我知道如何使用內部連接功能。在熊貓。我需要幫助的是,在某些情況下,這七個資料框具有相同名稱的列。在這些情況下,我想合并其中的資料并用分號分隔。
例如,如果 DF1 到 DF7 中的第 1 行具有相同的識別符號,我希望將每個資料幀中的 Col1(假設它們具有相同的名稱)組合起來以讀取:
dfdata1; dfdata2; ...;dfdata7
如果列名是唯一的,我希望它出現在最終的組合資料框中。
我已經包含了一個簡單的例子
import pandas as pd
data1 = pd.DataFrame([['Banana', 'Sally', 'CA'], ['Apple', 'Gretta', 'MN'], ['Orange', 'Samantha', 'NV']],
columns=['Product', 'Cashier', 'State'])
data2 = pd.DataFrame([['Shirt','', 'CA'], ['Shoe', 'Trish', 'MN'], ['Socks', 'Paula', 'NM', 'Hourly']],
這會產生兩個資料框:

如果我們要對狀態使用外部合并:
pd.merge(data1,data2,on='State',how='outer')

我想要的是更像這樣的東西:

這在熊貓中是否可行,還是我必須合并前兩個,合并具有相同名稱的列,然后繼續將其與第三個等結合起來。我正在努力提高效率。
uj5u.com熱心網友回復:
而不是合并,連接
# concatenate and groupby to join the strings
df = pd.concat([data1, data2]).groupby('State', as_index=False).agg(lambda x: '; '.join(el for el in x if pd.notna(el)))
print(df)
State Product Cashier Type
0 CA Banana; Shirt Sally;
1 MN Apple; Shoe Gretta; Trish
2 NM Socks Paula Hourly
3 NV Orange Samantha
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/478542.html
