我在 DataFrame 中有一個如下所示的表:
| 快遞員 | 送貨 | 價目單價目表 |
|---|---|---|
| 阿爾弗雷德儲物柜 | 2天) | 港幣$20 |
| 香港郵政 | 2天) | 港幣 50 元 |
| 中通快遞(到點) | 2天) | 港幣$20 |
| Zeek2Door(回家) | 2天) | 港幣$40 |
| 嘉里快運 | 2天) | 港幣 30 元 |
我想重新排列下表:
| 快遞員_1 | 交付_1 | price_list_1 | 快遞員_2 | 交付_2 | price_list_2 | 快遞員_3 | 交貨_3 | price_list_3 | 快遞員_4 | 交付_4 | price_list_4 | 快遞員_5 | 交付_5 | price_list_5 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 阿爾弗雷德儲物柜 | 2天) | 港幣$20 | 香港郵政 | 2天) | 港幣 50 元 | 中通快遞(到點) | 2天) | 港幣$20 | Zeek2Door(回家) | 2天) | 港幣$40 | 嘉里快運 | 2天) | 港幣 30 元 |
如何使用 Pandas 解決這個問題?我想不通!
資料:
{'couriers': ['Alfred Locker',
'Hongkong Post',
'ZTO Express (To-Point)',
'Zeek2Door (To Home)',
'Kerry Express'],
'delivery': ['2 day(s)', '2 day(s)', '2 day(s)', '2 day(s)', '2 day(s)'],
'price_list': ['HKD $20', 'HKD $50', 'HKD $20', 'HKD $40', 'HKD $30']}
uj5u.com熱心網友回復:
我認為您可以unstack 將 MultiIndex 轉換為普通索引 transpose:
s = df.unstack().sort_index(level=1)
s.index = [f'{x}_{y 1}' for x,y in s.index]
out = s.to_frame().T
輸出:
couriers_1 delivery_1 price_list_1 couriers_2 delivery_2 price_list_2 couriers_3 delivery_3 price_list_3 couriers_4 delivery_4 price_list_4 couriers_5 delivery_5 price_list_5
0 Alfred Locker 2 day(s) HKD $20 Hongkong Post 2 day(s) HKD $50 ZTO Express (To-Point) 2 day(s) HKD $20 Zeek2Door (To Home) 2 day(s) HKD $40 Kerry Express 2 day(s) HKD $30
uj5u.com熱心網友回復:
因此,如果您有一個回圈遍歷每個元素,則使用熊貓的 concat 來附加它們中的每一個,以形成資料框。
import pandas as pd
df = pd.DataFrame(zip(
["couriers", "Alfred Locker","Hongkong Post","ZTO Express(To-Point)","Zeek2Door(To Home)","Kerry Express"],
["delivery","2 day(s)","2 day(s)","2 day(s)","2 day(s)","2 day(s)"],
["price_list","HKD $20","HKD $50","HKD $20","HKD $40","HKD $30"],
))
counter_str = 1
#initialzing the df_result
df_result = ""
#iterating over the length so that we can add it to the string
for x in range(1,len(df)):
for i in df:
df_local = pd.DataFrame({df[i][0] "_" str(x) : [df[i][counter_str]]})
if len(df_result)>0:
df_result = pd.concat([df_result,df_local], axis = 1, join='inner')
else:
df_result = df_local
counter_str =1
print(df_result)
輸出:
couriers_1 delivery_1 price_list_1 ... couriers_5 delivery_5 price_list_5
0 Alfred Locker 2 day(s) HKD $20 ... Kerry Express 2 day(s) HKD $30
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/431709.html
上一篇:'TypeError:預期的字串或類似位元組的物件',同時嘗試在DataFrame的所有條目中用單個空格替換連續的空格
