Как искать элементы в списке в кадре данных и подсчитывать их - PullRequest
3 голосов
/ 27 апреля 2020

У меня есть следующий dataframe с его выводом.

import pandas as pd
animal = ["monkey"]  + ["tiger"] + ["bat"]
valores = [1] + [2] + [3]
dframe = pd.DataFrame({"animal": animal, "valor": valores})

dataframe:

    animal  valor
0   monkey  1
1   tiger   2
2   bat     3

У меня есть список, который я хочу найти элемент за элементом в dataframe, и если Затем match создает новый столбец со счетчиком, слово может быть в верхнем или нижнем регистре и будет равно сумме.

other_list = ['monkey', 'tiger', 'Tiger','tiger','Monkey']

    animal  valor count
0   monkey  1     2
1   tiger   2     3
2   bat     3     0

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Первая часть, я бы go с @Dani, но конвертировать счетчик в серию:

from collections import Counter
counts = pd.Series(Counter(map(str.lower, other_list)), name='counts')

Во второй части, чтобы добавить это к кадру данных, я бы использовал append или join, чтобы избежать зацикливания:

dframe = dframe.set_index('animal').join(counts).reset_index()
dframe['counts'] = dframe.counts.fillna(0).astype(int)
1 голос
/ 27 апреля 2020

Вы можете использовать коллекции. Счетчик:

from collections import Counter
other_list = ['monkey', 'tiger', 'Tiger','tiger','Monkey']
counts = Counter(map(str.lower, other_list))

dframe['count'] = [counts.get(ani.lower(), 0) for ani in dframe['animal']]

print(dframe)

Вывод

   animal  valor  count
0  monkey      1      2
1   tiger      2      3
2     bat      3      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...