Pandas GroupBy и добавить количество уникальных значений в качестве нового столбца - PullRequest
0 голосов
/ 07 февраля 2019

Проблема

Я пытаюсь сгруппировать DataFrame Pandas по столбцам day и source, а затем подсчитать уникальные экземпляры 3-го числа (timestamp) для каждой группы (чтобы выяснить, какмного обращений каждый источник получает в день), но я получаю эту ошибку (полный возврат ниже): TypeError: 'method' object is not subscriptable

Попытки

Мой код:

df['timestamp_count'] = df.groupby(["source", "day"]).agg({"timestamp": "nunique"})

Ив идеале я хотел бы получить такой результат (включая новый столбец timestamp_count:

day    source    timestamp                timestamp_count
1      facebook  2018-08-04 11:16:32.416  2
1      facebook  2019-01-03 10:25:38.216  2
1      twitter   2018-10-14 13:26:22.123  1
2      facebook  2019-01-30 12:16:32.416  1

Когда я запускаю df.describe(), я вижу, что source - это объект, но dayявляется целым числом. Может ли это быть частью проблемы? Рассматривая другие вопросы, представляется вероятным, что это происходит в том же духе, но ни один из них, по-видимому, не выдает такую ​​же комбинацию ввода / ошибки.

Может кто-нибудьпомочь новичку в Python? Большое спасибо!

Traceback

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-90-db5a002137ca> in <module>
----> 1 df['timestamp_count'] = (df.groupby["source", 
"day"]).agg({"timestamp": "nunique"})

TypeError: 'method' object is not subscriptable

1 Ответ

0 голосов
/ 07 февраля 2019

Используйте transform для трансляции результата:

df['timestamp_count'] = (
    df.groupby(["source", "day"])['timestamp'].transform('nunique'))
df

   day    source                timestamp  timestamp_count
0    1  facebook  2018-08-04 11:16:32.416                2
1    1  facebook  2019-01-03 10:25:38.216                2
2    1   twitter  2018-10-14 13:26:22.123                1
3    2  facebook  2019-01-30 12:16:32.416                1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...