Питон Панды подсчитывают количество вхождений внутри списков в столбце - PullRequest
0 голосов
/ 03 октября 2018

Скажем, у меня есть такой фрейм данных, как

    A     B     
0  [1,2]  Q     

1  [1,3]  Q     

2  [4,2]  Q     

Я хочу, чтобы количество каждого элемента в списках в столбце A

Итак, я хочу получить результат

    Number  Count
0     1       2

1     2       2

2     3       1

3     4       1

Я не уверен, как это сделать.Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Преобразование серии списка в фрейм данных, составление столбцов и использование value_counts для этой серии, т. Е.

count = pd.DataFrame(df['A'].values.tolist()).stack().value_counts()

pd.DataFrame({'Count':count.values,'Number':count.index})

  Count  Number
0      2       2
1      2       1
2      1       4
3      1       3

# demo dataframe : df = pd.DataFrame({'A': [[1,2], [1,3], [4,2]]})
0 голосов
/ 03 октября 2018

Вы можете использовать collections.Counter с itertools.chain:

from itertools import chain
from collections import Counter

counts = Counter(chain.from_iterable(df['A']))

res = pd.DataFrame.from_dict(counts, orient='index').reset_index()
res.columns =['Number', 'Count']

print(res)

   Number  Count
0       1      2
1       2      2
2       3      1
3       4      1
0 голосов
/ 03 октября 2018

Вам нужно:

from collections import Counter
sl = []
_ = [sl.extend(j) for i,j in df['A'].items()]
x = Counter(sl)

new_df = pd.DataFrame({'Number': list(x.keys()), 'Count': list(x.values())})
print(new_df)

Вывод

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