大熊猫:考虑多种情况正确过滤数据框列

林恩

我有一个代表顾客对餐厅评价的数据框。star_rating是此数据框中客户的评价。

  • 我想要做的是nb_favorables_mention在同一数据框中添加一列,该表示获得至少一个“有用”或“有趣”或“酷”评级并且该评价的评价> = 3的评论总数。
data = {'rating_id': ['1', '2','3','4','5','6','7','8','9'],
        'user_id': ['56', '13','56','99','99','13','12','88','45'],
        'restaurant_id':  ['xxx', 'xxx','yyy','yyy','xxx','zzz','zzz','eee','eee'],
        'star_rating': ['2.3', '3.7','1.2','5.0','1.0','3.2','1.0','2.2','0.2'],
        'rating_year': ['2012','2012','2020','2001','2020','2015','2000','2003','2004'],
        'first_year': ['2012', '2012','2001','2001','2012','2000','2000','2001','2001'],
        'last_year': ['2020', '2020','2020','2020','2020','2015','2015','2020','2020'],
        'funny': ['1', '0','0','1','1','1','0','0','0'],
        'useful': ['1', '0','0','0','1','0','0','0','1'],
        'cool': ['1', '0','0','0','1','1','1','1','1'],

        }


df = pd.DataFrame (data, columns = ['rating_id','user_id','restaurant_id','star_rating','rating_year','first_year','last_year','funny','useful','cool'])
df['star_rating'] = df['star_rating'].astype(float)



filtered_data = df[(df['star_rating'] >= 3) & (df['funny']==1 | df['useful']==1 | df['cool']==1)]
d = filtered_data.groupby('restaurant_id')['star_rating'].count().to_dict()

df['nb_favorables_mention'] = df['restaurant_id'].map(d)
df.head(20)

我不确定语法有什么问题,但是从我尝试过的过程中,我不断收到这些错误消息

  • ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

  • TypeError:无法对dtyped [object]数组和类型为[bool]的标量执行'ror_'

考虑到我要实现的目标,正确的语法是什么?

智慧

您有一个运算符优先级问题;在Python中,|运营商的优先级高于==中,括号包装比较表达式应该解决您的问题,还因为funnyusefulcool列是海峡型,使用字符串'1'代替数字1

filtered_data = df[(df['star_rating'] >= 3) & ((df['funny']=='1') | (df['useful']=='1') | (df['cool']=='1'))]

在这里检查结果

除了使用之外|,您还可以一次性比较多个列,然后使用以下命令检查条件any

filtered_data = df[(df['star_rating'] >= 3) & df[['funny', 'useful', 'cool']].eq('1').any(axis=1)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大熊猫,如何按列值过滤数据框

来自分类Dev

过滤出大熊猫数据框中的数据

来自分类Dev

在大熊猫值过滤数据框保留为NaN

来自分类Dev

如何使大熊猫在不按列裁剪的情况下显示整个数据框?

来自分类Dev

使用多列在大熊猫中转换大熊猫数据框

来自分类Dev

如何自动命名大熊猫数据框列?

来自分类Dev

替换大熊猫数据框中的列值

来自分类Dev

大熊猫数据框中仅某些列的总和

来自分类常见问题

分割大熊猫数据框

来自分类Dev

计算大熊猫数据框的元组

来自分类Dev

大熊猫数据框并行处理

来自分类Dev

透视大熊猫数据并添加列

来自分类Dev

大熊猫:根据其他数据框创建数据框列

来自分类Dev

大熊猫:连接数据框,对列数据进行正向填充和多索引

来自分类Dev

将大熊猫中的CSV文件导入大熊猫数据框

来自分类Dev

大熊猫将带有元组的数据框列扩展为多个列和行

来自分类Dev

大熊猫应用于数据框列以返回带有后缀的多个列

来自分类Dev

用年度数据绘制大熊猫数据框

来自分类常见问题

大熊猫数据框到一些列的字典

来自分类Dev

大熊猫:从基于多个列的数据框中删除观察结果

来自分类Dev

大熊猫数据框,按列比较2组的字符串值

来自分类Dev

大熊猫:基于多个列对数据框进行排序

来自分类Dev

从具有多个日期/价格列的数据框中以大熊猫创建面板

来自分类Dev

查找大熊猫数据框的列发生变化的索引

来自分类Dev

大熊猫:从现有的列值创建一个新的数据框

来自分类Dev

连接两个数据框并添加标签列以区分大熊猫

来自分类Dev

大熊猫数据框到一些列的字典

来自分类Dev

基于列内部索引对大熊猫数据框进行分组

来自分类Dev

如何可视地渲染大熊猫数据框(约7000行,3列)?

Related 相关文章

  1. 1

    大熊猫,如何按列值过滤数据框

  2. 2

    过滤出大熊猫数据框中的数据

  3. 3

    在大熊猫值过滤数据框保留为NaN

  4. 4

    如何使大熊猫在不按列裁剪的情况下显示整个数据框?

  5. 5

    使用多列在大熊猫中转换大熊猫数据框

  6. 6

    如何自动命名大熊猫数据框列?

  7. 7

    替换大熊猫数据框中的列值

  8. 8

    大熊猫数据框中仅某些列的总和

  9. 9

    分割大熊猫数据框

  10. 10

    计算大熊猫数据框的元组

  11. 11

    大熊猫数据框并行处理

  12. 12

    透视大熊猫数据并添加列

  13. 13

    大熊猫:根据其他数据框创建数据框列

  14. 14

    大熊猫:连接数据框,对列数据进行正向填充和多索引

  15. 15

    将大熊猫中的CSV文件导入大熊猫数据框

  16. 16

    大熊猫将带有元组的数据框列扩展为多个列和行

  17. 17

    大熊猫应用于数据框列以返回带有后缀的多个列

  18. 18

    用年度数据绘制大熊猫数据框

  19. 19

    大熊猫数据框到一些列的字典

  20. 20

    大熊猫:从基于多个列的数据框中删除观察结果

  21. 21

    大熊猫数据框,按列比较2组的字符串值

  22. 22

    大熊猫:基于多个列对数据框进行排序

  23. 23

    从具有多个日期/价格列的数据框中以大熊猫创建面板

  24. 24

    查找大熊猫数据框的列发生变化的索引

  25. 25

    大熊猫:从现有的列值创建一个新的数据框

  26. 26

    连接两个数据框并添加标签列以区分大熊猫

  27. 27

    大熊猫数据框到一些列的字典

  28. 28

    基于列内部索引对大熊猫数据框进行分组

  29. 29

    如何可视地渲染大熊猫数据框(约7000行,3列)?

热门标签

归档