我正在 Pandas 中讀取一個 excel 檔案,其中包含兩個級別的列。我正在使用 Python 3.7
示例 Excel 檔案
Unnamed: 0 Unnamed: 1 Unnamed: 2 2021-01-01 2021-01-02 2021-01-03 2021-01-04 2021-01-05
0 ProjectNr Name Sector categorya categoryb categoryc categoryd categorye
1 1 aaa A1 14.995 14.995 14.995 14.995 14.995
2 2 aaa A2 7.4975 7.4975 7.4975 NaN NaN
3 3 aaa A3 NaN 11.996 11.996 11.996 NaN
我想將行“類別”和“日期”轉換為資料框的不同列。我嘗試熔化,但我不知道如何進行第二次熔化或熔化到組合行標題。
我想得到類似的東西
ProjectNr Name Sector Category date Price
1 aaa A1 categorya 01/01/2021 € 15,00
1 aaa A1 categoryb 02/01/2021 € 15,00
1 aaa A1 categoryc 03/01/2021 € 15,00
1 aaa A1 categoryd 04/01/2021 € 15,00
1 aaa A1 categorye 05/01/2021 € 15,00
2 aaa A2 categorya 01/01/2021 € 7,50
2 aaa A2 categoryb 02/01/2021 € 7,50
2 aaa A2 categoryc 03/01/2021 € 7,50
2 aaa A2 categoryd 04/01/2021
2 aaa A2 categorye 05/01/2021
3 aaa A3 categorya 01/01/2021
3 aaa A3 categoryb 02/01/2021 € 12,00
3 aaa A3 categoryc 03/01/2021 € 12,00
3 aaa A3 categoryd 04/01/2021 € 12,00
3 aaa A3 categorye 05/01/2021
如果我創建帶有 header=[0, 1] 的 df 熔斷了列的名稱。沒有標題,melt 只適用于一列。例子:
Unnamed: 0 Unnamed: 1 Unnamed: 2 dt value
0 ProjectNr Name Sector 2021-01-01 categorya
1 1 aaa A1 2021-01-01 14.995
2 2 aaa A2 2021-01-01 7.4975
3 3 aaa A3 2021-01-01 NaN
4 ProjectNr Name Sector 2021-01-02 categoryb
5 1 aaa A1 2021-01-02 14.995
6 2 aaa A2 2021-01-02 7.4975
我怎樣才能融合兩個級別的標題?
uj5u.com熱心網友回復:
首先,我們需要正確讀取excel檔案
df = pd.read_excel('~/test.xlsx', header=[0, 1], index_col=[0, 1, 2])
使用MultiIndex您需要保留NaNs的級別堆疊,然后重置索引
df = df.stack(level=[1, 0], dropna=False).reset_index()
最后,重命名列
df.columns = ['ProjectNr', 'Name', 'Sector', 'Category', 'date', 'Price']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/380360.html
