1
votes

Comment puis-je convertir des colonnes en lignes dans Pandas?

J'ai quelque chose comme ceci:

Time    0    1    2 
Val1    22   45   65
Val2    78   12   45

et je veux ceci:

Values     Time
  22        0
  45        1
  65        2
  78        0
  12        1
  45        2

Comment puis-je faire?


0 commentaires

3 Réponses :


1
votes

Vous devez transposer votre tableau / matrice.

Utilisez

list(map(list, zip(*l)))

où list est votre liste


0 commentaires

4
votes

Ceci est pivot créant l'index avec cumcount

Time   0   1   2
Val1  22  45  65
Val2  78  12  45

Output:

df['idx'] = 'Val' + (df.groupby('Time').cumcount()+1).astype(str)
df.pivot(index='idx', columns='Time', values='Values').rename_axis(None)


2 commentaires

@HugoB Oui, le pivot est très utile. stackoverflow.com/questions/47152691/how-to-pivot -a-datafram‌ e est un article très instructif, bien qu'il ne couvre pas l'étape de création d'index, nécessaire pour résoudre complètement votre question.


Merci beaucoup! Je vais l'utiliser à coup sûr! Si gentil!



1
votes

Si votre décalage temporel est constant, ordonné et n'a aucune valeur manquante:

DELTA = 3
new_values = [df['Values'].iloc[i*DELTA:i*DELTA+DELTA].values.transpose() for i in range(int(len(df)/DELTA))]
df_new = pd.DataFrame(new_values , index=['Val'+str(i+1) for i in range(len(new_values ))])

print(df_new)
         0   1   2
Val1    22  45  65
Val2    78  12  45

Ce n'est pas une jolie solution, mais peut-être que cela aide. :-)


0 commentaires