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?
3 Réponses :
Vous devez transposer votre tableau / matrice.
Utilisez
list(map(list, zip(*l)))
où list est votre liste
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)
@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!
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. :-)