2 votes

Associer des données catégorielles avec des données numériques lors de l'utilisation de la fonction pivot_table

Je dois les données suivantes (3 millions de lignes) :

user_id | datetime   | type
1       | 2015-01-01 | q
1       | 2015-01-01 | d
1       | 2015-01-02 | d
2       | 2015-01-01 | d
2       | 2015-01-02 | q
2       | 2015-01-02 | q

Je veux obtenir le dataframe suivant :

user_id | 2015-01-01 | 2015-01-02 
1       | q:1, d:1   | d:1 
2       | d:1        | q:2 

Je sais que je pourrais utiliser pivot_table s'il n'y avait pas la colonne type. Cependant, j'ai aussi besoin de la prendre en compte. Je me demande si quelqu'un a une solution élégante à ce problème ?

P.S. Les cellules du tableau de sortie ne doivent pas nécessairement avoir exactement le même aspect. En tant que solution alternative, les comptages (de d et q) pourraient être ignorés.

3voto

piRSquared Points 159

_to_json_
Cela vous rapproche vraiment. Les valeurs des cellules sont des chaînes de caractères.

df.groupby(
    ['user_id', 'datetime']
).type.apply(lambda x: pd.value_counts(x).to_json()).unstack()

entrer la description de l'image ici

MultiIndex
Cela peut avoir plus de sens.

df.groupby(
    ['user_id', 'datetime']).type.apply(pd.value_counts).unstack(['datetime', -1])

entrer la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X