Синтаксис callback
немного нечетный в PHP. Вам нужно сделать массив. Первый элемент - это объект, а второй - метод.
call_user_func(array($player, 'SayHi'));
Вы также можете сделать это без call_user_func
:
$player->{'SayHi'}();
Или:
$method = 'SayHi';
$player->$method();
Мне удалось отфильтровать это до моего требования показывать месяц и год, изменяя dt.month на dt.strftime
df.join(df.apply(lambda x:
pd.Series(pd.date_range(x.StartDate,
x.EndDate,
freq='D')).dt.strftime('%b-%y'),1)
.apply(lambda x:
x.value_counts(),1)
.rename(columns=dict(enumerate(calendar.month_abbr))))
Однако на выходе теперь перечислены столбцы в алфавитном порядке, а не в январе до декабря по порядку года.
Любые идеи о том, как достичь этого, приветствуются
Во-первых, ваше вышесказанное, вы надеваете Вам нужно переименовать часть, потому что вы уже выполняете переименование при преобразовании в% m из серии дат.
Теперь проблема возникает с этим методом, когда вы вынимаете .dt.month, который возвращает «номер месяца», который используется для сортировки. Когда вы меняете это имя месяца использования, теперь вы делаете лексикографический вид. Итак, давайте переключимся на номер месяца (для сортировки) и сделаем небольшую лямбда-функцию для преобразования столбцов с номера месяца в имя.
df.join(df.apply(lambda x:
pd.Series(pd.date_range(x.StartDate,
x.EndDate,
freq='D')).dt.strftime('%m-%y'),1)
.apply(lambda x:
x.value_counts(),1)
.rename(columns=lambda x:
pd.to_datetime(x, format='%m-%y').strftime('%b-%y')))
Выход:
StartDate EndDate Days Mar-18 Apr-18 May-18 Jun-18
0 2018-03-20 00:36:00 2018-05-01 00:42:00 42.004167 12.0 30.0 1.0 NaN
1 2018-05-01 00:42:00 2018-06-04 17:15:38 34.690023 NaN NaN 31.0 4.0
2 2018-04-07 15:06:00 2018-05-09 17:01:00 32.079861 NaN 24.0 9.0 NaN
3 2018-03-21 04:36:00 2018-05-14 04:00:00 53.975000 11.0 30.0 13.0 NaN
4 2018-03-15 15:30:00 2018-05-08 08:30:00 53.708333 17.0 30.0 7.0 NaN
5 2018-05-08 08:30:00 2018-06-09 10:40:09 32.090382 NaN NaN 24.0 9.0
6 2018-03-21 09:00:00 2018-05-16 13:40:00 56.194444 11.0 30.0 16.0 NaN
7 2018-03-31 06:00:00 2018-05-26 16:30:00 56.437500 1.0 30.0 26.0 NaN
8 2018-03-14 18:18:00 2018-04-27 01:00:00 43.279167 18.0 26.0 NaN NaN
9 2018-04-07 15:00:00 2018-06-01 09:25:50 54.767940 NaN 24.0 31.0 NaN
10 2018-03-22 07:30:00 2018-05-20 19:00:00 59.479167 10.0 30.0 20.0 NaN