是否按包含字符串和聚合函数的列值进行分组和筛选?

2024-06-15 05:26:26 发布

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

我怎样才能通过几列对只包含该列值中任何位置的字符串的值进行分组

例如,如果我想查看州和剧院的名称,但只查看标题作为单词dog的次数或次数,我如何分组以过滤该名称

State | Theatre | Title           | TicketPrice
NY       B        Dog in heaven        5.50
NJ       C        Basketball           3.33
NY       B        Cats                 9.00
NY       B        Hair of Dog          44.00
NY       B        Lions                22.00
NJ       C        Dog Land             4.99

按州和剧院分组,我只想知道在标题栏中狗作为一个词出现的标题的数量,以及每个分组的总数,只想知道狗出现的标题的数量

谢谢


Tags: 字符串名称标题数量title单词次数state
1条回答
网友
1楼 · 发布于 2024-06-15 05:26:26

通过^{}比较列,对于掩码,将True->1False->0映射转换为整数,并通过sum计数1的数量:

df1 = (df.assign(count = df['Title'].str.contains('Dog').astype(int))
        .groupby(['State', 'Theatre'])['count']
        .sum()
        .reset_index())

print (df1)
  State Theatre  count
0    NJ       C      1
1    NY       B      2

如果还希望为每个组的TicketPrice列聚合sum

df2 = (df.assign(count = df['Title'].str.contains('Dog').astype(int))
        .groupby(['State', 'Theatre'])['count', 'TicketPrice']
        .sum()
        .reset_index())

print (df2)
  State Theatre  count  TicketPrice
0    NJ       C      1         8.32
1    NY       B      2        80.50

筛选行,然后计算行数,但如果筛选出不匹配的组:

df1 = (df[df['Title'].str.contains('Dog')]
        .groupby(['State', 'Theatre'])['TicketPrice']
        .size()
        .reset_index(name='count'))

print (df1)
  State Theatre  count
0    NJ       C      1
1    NY       B      2

相关问题 更多 >