我有一個如下面的DataFrame。我試圖用pivot
轉置它,但結果並不如我所願。我要完成以下 - 我希望它轉換爲在pandas/python中調換DataFrame,但不是所有列
df=pd.DataFrame({'ID_Patient':[11132,2755,9753,8453,4872],'Name_Patient':['Jim','Jack','Sue','Tom','James'],'Visits_Jan':[2,1,0,4,2],'Visits_Feb':[5,0,0,1,1],'Visits_Mar':[0,0,4,1,2]})
df=df[['ID_Patient','Name_Patient','Visits_Jan','Visits_Feb','Visits_Mar']]
df#The data set I wish to convert
Out[318]:
ID_Patient Name_Patient Visits_Jan Visits_Feb Visits_Mar
0 11132 Jim 2 5 5
1 2755 Jack 1 0 0
2 9753 Sue 0 0 0
3 8453 Tom 4 1 1
4 4872 James 2 1 1
:
df_altered
Out[317]:
ID_Patient Name_Patient Month_of_visit Col1
0 11132 Jim Visits_Jan 2
1 11132 Jim Visits_Feb 5
2 11132 Jim Visits_Mar 5
3 2755 Jack Visits_Jan 1
4 2755 Jack Visits_Feb 0
5 2755 Jack Visits_Mar 0
6 9753 Sue Visits_Jan 0
7 9753 Sue Visits_Feb 0
8 9753 Sue Visits_Mar 0
9 8453 Tom Visits_Jan 4
10 8453 Tom Visits_Feb 1
11 8453 Tom Visits_Mar 1
12 4872 James Visits_Jan 2
13 4872 James Visits_Feb 1
14 4872 James Visits_Mar 1
非常感謝你。只是一個旁註 - 如果你的Pandas版本低於0.20.0,你需要'pandas.melt'而不是'DataFrame.melt'。因此,代碼變成'pd.melt(df,id_vars = ['ID_Patient','Name_Patient'],var_name ='Month_of_visit',value_name ='Col1')' –
這個答案值得更多的關注,因爲它是習慣用法。爲此目的創建了「pd.melt」和「pd.DataFrame.melt」。所以,很好的答案加上一個。 – piRSquared