Поведение по умолчанию 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