這是不可能的,因爲你大熊貓索引(包括列和行標籤)中提供的示例性數據不能包含重複。數據中的一個示例爲Subject 2
和test C
- 此組合出現兩次,這意味着無法知道哪些值應與相應的日期一起進行。
在,你有獨特的列和行標籤的情況下,你可以使用的melt
組合與pivot
像這樣:
import pandas as pd
df = pd.DataFrame({'subject': [1, 2, 2, 3,4,1,1,2,3,2],
'test': ['A', 'B', 'C', 'D','A', 'B', 'C', 'D','B', 'C'],
'Day1': ['X1','X2','X3','X4','X5','X6','X7','X8','X9','X10'],
'Day2': ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8','Y9','Y10'],
'Day3': ['Z1','Z2','Z3','Z4','Z5','Z6','Z7','Z8','Z9','Z10'],
'Day4': ['K1','K2','K3','K4','K5','K6','K7','K8','K9','K10']})
melted = pd.melt(df, id_vars=['subject', 'test'])
melted
重塑基於傳遞給它的id_vars
的數據。它現在看起來像這樣:
subject test variable value
0 1 A Day1 X1
1 2 B Day1 X2
2 2 C Day1 X3
3 3 D Day1 X4
4 4 A Day1 X5
現在您可以創建一個包含您希望作爲列標題的值的新列。 這些必須是唯一的。
melted['col_name'] = 'test' + melted['test'] + '-' + melted['variable']
現在melted
有適當的值就是我們想要成爲我們在長期的格式標題:
subject test variable value col_name
0 1 A Day1 X1 testA-Day1
1 2 B Day1 X2 testB-Day1
2 2 C Day1 X3 testC-Day1
3 3 D Day1 X4 testD-Day1
4 4 A Day1 X5 testA-Day1
pivot
會讓我們的方式休息,但在將無法正常工作這種情況是因爲標題不是唯一的(再次,Subject 2
和test C
的問題)。
melted.pivot('subject', columns='col_name', values='value')
如果,例如,DayN
行是時間戳,我們可能不會有這個問題。
索引(列名和行索引)必須是唯一的,所以這對於您發佈的示例數據來說是不可能的。 例如,「subject = 2」和「test = C」的行出現兩次,這意味着每天都會有兩個不同的值。 –