假設我們有一個這樣的資料框架
。df = pd.DataFrame(
np.range(2, 11).reshape(-1, 3) 。
index=list('ABC') 。
columns=pd.MultiIndex.from_arrays([
['data1', 'data2','data3'] 。
['F', 'K',' ']。
['', '',''] 。
], names=['meter', 'Sleeper',''])
).rename_axis('Index')
df
meter data1 data2 data3
睡眠者 F K
索引
A 2 3 4
B 6 7 8
C 10 11 12
df.index.names
FrozenList(['Index'])
當我做unstack時
df=df.unstack().reset_index()
我得到了這個結果
meter Sleeper Index 0
0 data1 F A 2
1 data1 F B5
2 data1 F C 8
3 data2 K A3
4 data2 K B6
5 data2 K C9
6 data3 A4
7 data3 B7
8 data3 C 10
但是我不希望在meter下面有data3列。我想保持它作為一個列的狀態。
我們怎樣才能實作這個目標呢?
我試過
df.set_index(['meter','Sleeper']) 。 Value(fill_value='').rename_axis(None, 1).reset_index()
但是我得到了
> KeyError: "['meter', 'Sleeper']都不在列中"。
uj5u.com熱心網友回復:
代替unstack,你可以通過.set_index()設定append=True作為索引,然后在MultiIndex列的兩個層次上.stack(),如下所示:
(df.set_index('data3', append=True)
.stack([0, 1] )
.reset_index()
.rename({''/span>: '0'}, axis=1)
)
資料輸入:
df = pd.DataFrame(
np.range(2, 11).reshape(-1, 3) 。
index=list('ABC') 。
columns=pd.MultiIndex.from_arrays([
['data1', 'data2','data3'] 。
['F', 'K',' ']。
['', '',''] 。
], names=['meter', 'Sleeper',''])
).rename_axis('Index')
df
儀表 data1 data2 data3
睡眠者F K
指數
A 2 3 4
B 5 6 7
C 8 9 10
輸出
Index data3 meter Sleeper 0
0 A 4 data1 F 2.0
1 A 4 data2 K3.0
2 B 7 data1 F5.0
3 B 7 data2 K 6.0[/span].
4 C 10 data1 F8.0
5 C 10 data2 K9.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/309180.html
標籤:
上一篇:來自usethis軟體包的github行動出現錯誤找不到'action.yml'、'action.yaml'或'Dockerfile'。
