[英]how do i convert a pandas dataframe from wide to long while keeping the index?
我想將數據框從寬轉換為長,從多列轉換為兩列,同時保留索引。 我在下面嘗試過使用melt。 請讓我知道我錯過了什么。
nb 實際數據框將有數百列,所以我無法在代碼中列出它們。
創建數據框:
df = pd.DataFrame(np.random.randint(0,100,size=(3, 3)), columns=list('ABC'),index = ['jan','feb','mar'])
輸出:
A B C
jan 76 7 72
feb 29 15 69
mar 4 24 9
融化數據框:
df2 = pd.melt(df.reset_index())
輸出:
variable value
0 index jan
1 index feb
2 index mar
3 A 76
4 A 29
5 A 4
6 B 7
7 B 15
8 B 24
9 C 72
10 C 69
11 C 9
所需的輸出:
variable value
jan A 76
feb A 29
mar A 4
jan B 7
feb B 15
mar B 24
jan C 72
feb C 69
mar C 9
使用df.melt
,您可以使用 , 'index'
作為'index'
名稱,然后將 'index' 列設置回索引並重命名:
df.reset_index().melt('index').set_index('index').rename_axis(None)
使用df.stack
也可以使用下面的:
(df.stack().rename_axis([None,'variable']).reset_index(-1,name='value')
.sort_values('variable'))
variable value
jan A 76
feb A 29
mar A 4
jan B 7
feb B 15
mar B 24
jan C 72
feb C 69
mar C 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.