我在下面有一張桌子。
更新的問題(添加一列稱為客戶 ID
| 客戶 ID | 一月交易費 | 一月交易費 | 一月產品費 | 一月產品費 | 二月交易費 | 二月交易費 | 二月產品費 | 二月產品費 |
|---|---|---|---|---|---|---|---|---|
| 港幣 | 美元 | 港幣 | 美元 | 港幣 | 美元 | 港幣 | 美元 | |
| 100103 | 100 | 20 | 21 | 24 | 215 | 55 | 253 | 25 |
| 100104 | 200 | 30 | 31 | 34 | 315 | 65 | 353 | 35 |
我想將表格從上面轉換為下面的預期結果。
| 客戶 ID | 時期 | 型別 | 外匯 | 價錢 |
|---|---|---|---|---|
| 100103 | 202201 | 手續費 | 港幣 | 100 |
| 100103 | 202201 | 手續費 | 美元 | 20 |
| 100103 | 202201 | 產品費 | 港幣 | 21 |
| 100103 | 202201 | 產品費 | 美元 | 24 |
| 100103 | 202202 | 手續費 | 港幣 | 215 |
| 100103 | 202202 | 手續費 | 美元 | 55 |
| 100103 | 202202 | 產品費 | 港幣 | 253 |
| 100103 | 202202 | 產品費 | 美元 | 25 |
| 100104 | 202201 | 手續費 | 港幣 | 200 |
| 100104 | 202201 | 手續費 | 美元 | 30 |
| 100104 | 202201 | 產品費 | 港幣 | 31 |
| 100104 | 202201 | 產品費 | 美元 | 34 |
| 100104 | 202202 | 手續費 | 港幣 | 315 |
| 100104 | 202202 | 手續費 | 美元 | 65 |
| 100104 | 202202 | 產品費 | 港幣 | 353 |
| 100104 | 202202 | 產品費 | 美元 | 35 |
在我的想法中,我想將交易費用和貨幣連接在一起,然后再拆分單詞,但是我在做附加欄時已經遇到了問題。我的編碼如下
import pandas as pd
test=pd.DataFrame({'Cust ID':['','','100103','100104'],'0':['Jan Transaction Fee','HKD',100,200],'1':['Jan Transaction Fee','USD',20,30],\
'2':['Jan Product Fee','HKD',21,31],'3':['Jan Product Fee','USD',24,34],
'4':['Feb Transaction Fee','HKD',215,315],'5':['Feb Transaction Fee','USD',55,65],
'6':['Feb Product Fee','HKD',253,353],'7':['Feb Product Fee','USD',25,35]})
test
df_1=test[['0','1']].iloc[:2]
df_1['test']=df_1['0'].str.cat(sep=' ')
df_1['test_1']=df_1['1'].str.cat(sep=' ')
df_1['test']=pd.concat([df_1['test_1']])
df_1
最終結果如下

我的測驗欄洗掉了 Jan Transaction Fee HKD,只有 Jan Transaction Fee USD 保留在測驗欄下。有沒有人指導我如何將 test_1 列下的值附加到 test 列,以便有四行 tgt?或者有什么方法可以以更簡單的方式完成我的預期結果(通過使用任何轉置技術)。
我只是 Python 的初學者。希望有人可以提供幫助。謝謝
uj5u.com熱心網友回復:
IIUC,您可以將標簽、transpose和splitType 列設定為 Type 和 period (修改日期):
df = test.set_axis(['Type', 'FX', 'Price']).T
# or renaming by numerical index
# df = test.rename({0: 'Type', 1: 'FW', 2: 'Price'}).T
df[['Period', 'Type']] = df['Type'].str.split(n=1, expand=True)
df['Period'] = pd.to_datetime('2022 ' df['Period']).dt.strftime('%Y%m')
輸出:
Type FW Price Period
0 Transaction Fee HKD 100 202201
1 Transaction Fee USD 20 202201
2 Product Fee HKD 21 202201
3 Product Fee USD 24 202201
4 Transaction Fee HKD 215 202202
5 Transaction Fee USD 55 202202
6 Product Fee HKD 253 202202
7 Product Fee USD 25 202202
周期為 YYYYMMDD 整數,DD 為 MonthEnd
df['Period'] = (pd.to_datetime('2022 ' df['Period'])
.add(pd.offsets.MonthEnd())
.dt.strftime('%Y%m%d')
.astype(int)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456084.html
上一篇:用前綴重命名新的拆分列
下一篇:如何將函式應用于資料框的選定行
