我正在使用 python,我有一個名為“noshow”的資料框,有 5 列,例如,
- 電話 - float64
- 名稱 - 物件
- 總訂單數 - int64
- 票據總價值 - float64
- List_of_Order_Id - 物件
第 5 列“List_of_Order_Id”具有每行(客戶)的訂單 ID 串列,如下所示,
In [11]: noshow
Out[11]:
Mobile ... List_of_Order_Id
0 9.163820e 08 ... 21810
1 9.179049e 08 ... 23387
2 9.183748e 08 ... 21767
3 9.186110e 08 ... 23457
4 9.187790e 08 ... 23117,23163
.. ... ... ...
353 9.970647e 09 ... 21549
354 9.971940e 09 ... 22753
355 9.994742e 09 ... 21505,21836,22291,22539,22734
356 9.994964e 09 ... 22348
357 9.994997e 09 ... 21100,21550
[358 rows x 5 columns]
現在,我想在每個逗號處自動拆分“List_of_Order_Id”列,并使用回圈或任何可用的解決方案為每個值創建一個新列。
例如,如果在 358 行中 List_of_Order_Id 列的其中一行具有“ n ”個訂單 ID 值,并且這是每個客戶的最大訂單 ID 數,那么我想將其拆分為“ n ”列并命名每一列都為“Order_Id_1”、“Order_Id_2”、......、“Order_Id_n”,數字作為后綴。
請幫助!提前致謝。
uj5u.com熱心網友回復:
您可以使用str.split拆分列中的字串,然后將生成的 DataFrame 附加到原始 DataFrame,使用其寬度分配列名稱。
temp = df['List_of_Order_Id'].str.split(',', expand=True).applymap(lambda x: np.nan if x is None else x)
df[['Order_Id_' str(i) for i in range(1,temp.shape[1] 1)]] = temp
Mobile ... List_of_Order_Id Order_Id_1 Order_Id_2 \
0 9.163820e 08 ... 21810 21810 NaN
1 9.179049e 08 ... 23387 23387 NaN
2 9.183748e 08 ... 21767 21767 NaN
3 9.186110e 08 ... 23457 23457 NaN
4 9.187790e 08 ... 23117,23163 23117 23163
.. ... ... ... ... NaN
353 9.970647e 09 ... 21549 21549 NaN
354 9.971940e 09 ... 22753 22753 NaN
355 9.994742e 09 ... 21505,21836,22291,22539,22734 21505 21836
356 9.994964e 09 ... 22348 22348 NaN
357 9.994997e 09 ... 21100,21550 21100 21550
Order_Id_3 Order_Id_4 Order_Id_5
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
.. NaN NaN NaN
353 NaN NaN NaN
354 NaN NaN NaN
355 22291 22539 22734
356 NaN NaN NaN
357 NaN NaN NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/387648.html
