Pandas Pivot на одну колонку с мультииндексом - PullRequest
0 голосов
/ 02 июля 2018

я хочу повернуть таблицу на основе одного столбца и с индексом в виде двух столбцов,

Dataset:

uid     interaction date
1       like        2016-12-04
1       like        2016-12-05
1       comment     2016-12-05
1       like        2016-12-05
2       like        2016-12-04
2       like        2016-12-05
2       comment     2016-12-05
2       like        2016-12-05

с использованием uid и даты, которую я хочу, чтобы количество взаимодействий произошло для конкретного uid на определенную дату.

окончательный результат:

uid     like    comment  date
1       1       0       2016-12-04
1       2       1       2016-12-05
2       1       0       2016-12-04
2       2       1       2016-12-05      

Подход, который я попробовал:

doc_social_interaction.pivot_table(index = ['uid','date'],columns = 'interaction', aggfunc=sum)

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Другой подход: (Мой фрейм данных называется test)

Шаг 1: добавить константу:

test['constant'] =1
pd.pivot_table(test, index=['uid', 'date'], columns='interaction', values='constant', aggfunc='sum').fillna(0)

    interaction     comment     like
uid     date        
1       2016-12-04   0.0        1.0
        2016-12-05   1.0        2.0
2       2016-12-04   0.0        1.0
        2016-12-05   1.0        2.0
0 голосов
/ 02 июля 2018

Вы близки, нужно GroupBy.size для подсчета:

df1 = df.pivot_table(index=['uid','date'],columns='interaction',aggfunc='size',fill_value=0)

Другие решения:

df1 = df.groupby(['uid','date','interaction']).size().unstack(fill_value=0)

df1 = df.groupby(['uid','date'])['interaction'].value_counts().unstack(fill_value=0)

df1 = pd.crosstab([df['uid'],df['date']], df['interaction'])

print (df1)
interaction     comment  like
uid date                     
1   2016-12-04        0     1
    2016-12-05        1     2
2   2016-12-04        0     1
    2016-12-05        1     2

Последняя очистка некоторых данных:

df1 = df1.reset_index().rename_axis(None, 1)
print (df1)
   uid        date  comment  like
0    1  2016-12-04        0     1
1    1  2016-12-05        1     2
2    2  2016-12-04        0     1
3    2  2016-12-05        1     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...