Подсчет появления элемента с определенным значением в другом столбце - PullRequest
0 голосов
/ 13 мая 2019

У меня есть CSV-файл с двумя столбцами, один для рейтинга и один для комментария. Я хочу посчитать, сколько раз "!" встречается в комментариях и дает соответствующие значения в соответствии с рейтингами. Например, я хочу сказать, что рейтинг 5 и «!» происходит в 545 раз в комментариях, которые имеют 5 оценок. У меня есть счетчик, но он не указывает рейтинг. Пока я пробовал это

counter = 0
import csv
searchpm = '!'
with open('Reviews.csv', encoding='UTF-8') as f:
        for line in csv.reader(f):
            if line.df['Score'] == 5:
                if any(searchpm in l for l in map(str.lower, line)):
                      counter += 1

print(counter)

выдает ошибку: у объекта 'list' нет атрибута 'df' Как я могу распечатать сколько раз "!" встречается в каждом счете от 1 до 5?

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Панды - лучший вариант для чтения этого CSV-файла.

df = pd.read_csv('Reviews.csv')

Затем вы можете создать новый столбец, чтобы проверить, есть ли в столбце «Комментарий» символ «!».

df['checkchar'] = df.comments.apply(lambda x: '!' in x)

Наконец, чтобы узнать, сколько комментариев к каждому баллу имеет символ '!', Группа делает эту работу.

>>> df.groupby('Score').sum().reset_index()
     score  checkchar
0      1    1.0
1      2    5.0
2      3    20.0
3      4    101.0
4      5    545.0
0 голосов
/ 13 мая 2019

Вы можете использовать defaultdict, чтобы показать, сколько раз '!' происходит для каждого счета.

import csv
from collections import defaultdict

counter = defaultdict(int)
searchpm = '!'

with open('Reviews.csv', encoding='UTF-8') as f:
    next(f)  # for skip first row with headers
    for line in csv.reader(f):
        counter[str(line[0])] += line[1].count(searchpm)

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