moyen le plus intelligent de créer une trame de données multi-index pivotée à partir d'une trame de données empilée

Steven G

J'ai donc un ensemble de données très typique qui ressemble à ceci:

data = {'date': {0: '10/02/2017',
  1: '10/02/2017',
  2: '10/02/2017',
  3: '10/02/2017',
  4: '10/02/2017'},
 'field': {0: 'field1', 1: 'field2', 2: 'field1', 3: 'field2', 4: 'field3'},
 'type': {0: 'type1', 1: 'type1', 2: 'type2', 3: 'type2', 4: 'type2'},
 'value': {0: 1.79067,
  1: 1.7987200000000001,
  2: 1.7978900000000002,
  3: 1.8001099999999999,
  4: 1.8045599999999999}}

df = pd.DataFrame(data)
df.date = pd.to_datetime(df.date)

cela devrait ressembler à ceci (le jeu de données réel a de nombreuses dates différentes):

        date   field   type    value
0 2017-10-02  field1  type1  1.79067
1 2017-10-02  field2  type1  1.79872
2 2017-10-02  field1  type2  1.79789
3 2017-10-02  field2  type2  1.80011
4 2017-10-02  field3  type2  1.80456

Je souhaite créer une trame de données multi-index pivotée telle que:

              type1             type2                  
field        field1   field2   field1   field2   field3
date                                                   
2017-10-02  1.79067  1.79872  1.79789  1.80011  1.80456

la façon la plus intelligente que j'ai trouvée jusqu'à présent est la suivante:

grouped = df.groupby('type')
res = {}
for name, df in grouped:
    res[name] = df.pivot(index='date', columns='field', values='value')
df = pd.concat(res, axis=1)

existe-t-il un autre moyen efficace d'y parvenir?

Merci

BEN_YO

Option 1

En utilisant unstack

In [36]: df.set_index(['date','field','type'])['value'].unstack([-1,-2])
Out[36]:
type          type1             type2
field        field1   field2   field1   field2   field3
date
2017-10-02  1.79067  1.79872  1.79789  1.80011  1.80456

Option 2

pivot_table

pd.pivot_table(df,values='value',index='date',columns=['type','field'])
Out[464]: 
type          type1             type2                  
field        field1   field2   field1   field2   field3
date                                                   
2017-10-02  1.79067  1.79872  1.79789  1.80011  1.80456

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive