2017-02-22 16 views
3

В данном фреймворке данных Pandas мне нужно подсчитать количество уникальных элементов в столбце y для каждого элемента в столбце x. Я придумал методы подсчета в dicts, но они, похоже, не работают должным образом. Пример того, что я пытаюсь управлять:Pandas: для каждого элемента в столбце подсчитайте количество разных элементов в другом столбце

df = pd.DataFrame([[a, 2], [a, 1], [c, 4], [a, 1], [c, 4]]), columns=list('AB')) 

Который создает следующий Dataframe:

A B 
0 a 2 
1 a 1 
2 c 4 
3 a 1 
4 c 4 

Теперь выход я хочу должен быть:

a:2 
c:1 
+0

Если мой или другой ответ был полезным, не забывайте [принимать] (http://meta.stackexchange.com/a/5235/295067) это. Благодарю. – jezrael

ответ

3

Вам нужно groupby с SeriesGroupBy.nunique и последний to_dict:

print (df.groupby('A').B.nunique()) 
A 
a 2 
c 1 
Name: B, dtype: int64 

print (df.groupby('A').B.nunique().to_dict()) 
{'a': 2, 'c': 1} 
+0

@piRSquared - Да, это тоже хорошо. Кстати, как дела? Занятый? – jezrael

+0

Я думаю, что панды все больше и больше любимы, и много новых ответов приходят, что супер;) – jezrael

+0

Я думаю, что это здорово! Надеюсь, что то, что мы делаем, помогает увлекать больше людей. Вы ответили на многие вопросы панд, чем кто-либо другой. Только ты и Эдхум ответили больше, чем я. – piRSquared

1

Используйте drop_duplicates, чтобы найти уникальные значения. Затем используйте value_counts

df.drop_duplicates().A.value_counts() 

a 2 
c 1 
Name: A, dtype: int64