J'ai un DataFrame comme celui ci-dessous. J'ai essayé de le transposer en utilisant pivot
, mais les résultats n'étaient pas comme je le souhaitais. Je veux accomplir ce qui suit -Transposez le DataFrame dans pandas/python, mais pas toutes les colonnes
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
Je veux qu'il soit converti en:
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
Merci beaucoup. Juste une note de côté pour les autres - si votre version Pandas est ci-dessous '0.20.0', vous avez besoin de' pandas.melt' à la place 'DataFrame.melt'. Par conséquent, le code devient 'pd.melt (df, id_vars = ['ID_Patient', 'Nom_Patient'], var_name = 'Month_of_visit', valeur_name = 'Col1')' –
Cette réponse mérite plus d'attention car elle est idiomatique. 'pd.melt' et' pd.DataFrame.melt' ont été créés dans ce but précis. Donc, bonne réponse plus un. – piRSquared