计算不同列中具有特定值的元素的出现情况

时间:2019-05-13 19:08:18

标签: python csv dataframe

我有一个包含两列的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发生?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

然后,您可以创建一个新列,以检查'Comment'列是否具有char'!'。

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

最后,要获得每个分数上有字符'!'的评论,请使用groupby进行操作。

>>> 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