Что делает pivot_table, если столбцы не переданы pivot? - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть DF "users", который хранит эти данные:

  weekday    city  visitors  signups
0     Sun  Austin       139        7
1     Sun  Dallas       237       12
2     Mon  Austin       326        3
3     Mon  Dallas       456        5

И я не понимаю вывод этого:

users.pivot_table(index ='weekday')

Вывод:

         signups  visitors
weekday                   
Mon          4.0       391
Sun          9.5       188

Я знаю, что функция по умолчанию, с которой агрегируется pivot_table, это mean(). Я просто не понимаю, как это «поворачивает» стол. Почему город не появляется?

1 Ответ

1 голос
/ 05 апреля 2020

Поведение по умолчанию pivot_table действует на все неключевые столбцы и вызывает внутренние вызовы groupby.agg ( source ). Если есть столбцы, для которых agg не может вызвать функцию (в данном случае mean), похоже, что agg просто игнорирует их ( source ). Вот глупый пример, где мы изменяем функцию, чтобы она принимала строки или числа, и pivot_table работает на всех столбцах:

import pandas as pd
import numpy as np

def custom_mean(l):
    if type(l.iloc[0]) == str:
        return ''.join(l)
    else:
        return np.mean(l)

df = pd.DataFrame({'weekday':  ['Sun', 'Sun', 'Mon', 'Mon'],
                   'city':     ['Austin', 'Dallas', 'Austin', 'Dallas'],
                   'visitors': [139, 237, 326, 456],
                   'signups':  [7, 12, 3, 5]})


print(df.pivot_table(index = 'weekday', aggfunc = custom_mean))

Вывод:

                 city  signups  visitors
weekday                                 
Mon      AustinDallas      4.0       391
Sun      AustinDallas      9.5       188
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...