Панды: Как сгруппировать и показать количество уникальных значений - PullRequest
0 голосов
/ 03 марта 2019

У меня есть данные в следующем формате:

dateObs        website
---            --- 
2015-04-21     google.com
2015-08-13     facebook.com
2015-11-15     google.com
...

Я хочу вывод в следующем формате:

year        count of distinct websites
---         ---
2015        2
...

Я могу получить общее количество сайтов в год, включая дубликаты, используя:

import pandas as pd
import numpy as np

data = pd.read_csv(file_path)
groupby = data.groupby(pd.to_datetime(data['dateObs']).dt.year).agg({'website':np.size})

Как я могу отбросить дубликаты в счетчике?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Просто используйте .nunique():

data.groupby(pd.to_datetime(data['dateObs']).dt.year).nunique()

0 голосов
/ 03 марта 2019

- это проверка того, можете ли вы получить то, что вы хотите, от прямого кросс-табулирования.

http://pandas.pydata.org//pandas-docs//version//0.17.0//generated//pandas.crosstab.html

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...