计算在不同列中具有特定值的元素的出现次数

2024-10-04 05:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,有两列,一列用于评级,一列用于评论。我要数多少次出现在注释中,并根据评级给出相应的值。例如,我想说,评分是5和'!'在评分为5的评论中出现545次。我有一个计数器,但它没有指定等级。到目前为止我试过这个

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的每个分数中发生


Tags: 文件csvinimportdfforifwith
2条回答

您可以使用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)

熊猫是读取此csv文件的更好选择

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

然后,您可以创建一个新列来检查“Comment”列是否具有字符“!”

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

相关问题 更多 >