我最終想按具有多個運輸要求的專案與只有 1 個的專案進行分組。
我有一個看起來像這樣的 pandas df 列:
ID #(column name = ID)
1111
1111,2222
1111,2222
2222,4444,3333
2222,4444
我如何創建一個字典物件或映射層(對所有建議開放),如果它匹配標準并更改鍵值,我可以在其中傳遞任何值?
例如,如果將該值1111, 4444更改為Express Shipping, Standard Shipping并使其位于同一資料框中。
我最終想按具有多個運輸要求的專案與只有 1 個的專案進行分組。
1. shipping_num = (1111, 2222, 3333, 4444).
2. shipping_map = (Express shipping, Standard Shipping, 2-day shipping, 1-day shipping)
*NEW_SHIPPING MAP COLUMN*
Express shipping
Express shipping, Standard Shipping
Standard Shipping, 1-day shipping,2-day shipping
Standard Shipping, 1-day shipping
感謝您的關注!
uj5u.com熱心網友回復:
shipping_num您可以從和創建映射字典shipping_map,然后使用str.split 從列explode中獲取各個 ID 號。ID然后用于map獲取運輸地圖;最后使用groupby agg恢復原始形狀:
shipping_num = (1111, 2222, 3333, 4444)
shipping_map = ('Express shipping','Standard Shipping', '2-day shipping', '1-day shipping')
mapping = dict(zip(shipping_num, shipping_map))
df['shipping_map'] = df['ID'].str.split(',').explode().astype(int).map(mapping).groupby(level=0).agg(', '.join)
輸出:
ID shipping_map
0 1111 Express shipping
1 1111,2222 Express shipping, Standard Shipping
2 1111,2222 Express shipping, Standard Shipping
3 2222,4444,3333 Standard Shipping, 1-day shipping, 2-day shipping
4 2222,4444 Standard Shipping, 1-day shipping
uj5u.com熱心網友回復:
我不是 100% 清楚你想要代碼做什么。可能有幫助的一件事是建立一個像MyDict = {1111:"Express Shipping",4444:"Standard Shipping}. 從那里,您可以df["NewColumn"] = df["ID"].apply(lambda x: MyDict[x])將數字轉換為標簽。
但是您似乎對使用多個鍵感興趣?
可能有幫助的另一件事是將您的“ID”列臨時轉換為字串(例如df['StrID'] = df['ID'].astype(str)),然后用逗號“拆分”列。(例如df['StrID'].str.split(','),這將使您計算每列中的 ID 數量。然后您可以對其進行分組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454533.html
標籤:Python python-3.x 熊猫 数据框 熊猫-groupby
上一篇:為每月與客戶關聯的所有行分配正確的資格-Python/Pandas
下一篇:傳播然后減去熊貓資料框中的連續行
