分组中发生事件的最佳方式

时间:2018-10-05 12:35:10

标签: python pandas

我有一些包含票证的数据。我只想在“评论”列中找到多少票已分配给 Fields Techs 。所有的票都有多次进入(评论)。

field_tech=logs_data[logs_data['Comment'].str.contains('Assigned:Fields Techs')]

# calculate the length of the subset


len(field_tech)

我实际上是在考虑按评论对它们进行分组,获取每个票证的数据框,将它们存储在列表中,然后循环遍历该列表以获取我的信息。我知道它是大量的计算,但是我真的不知道如何确认所做的事情,也不知道如何将groupby的所有结果拆分到一个列表中。

我认为正确的SQL脚本应该是这样的:

select tickets,Comment
from  logs
where Comment like 'Assigned:Fields Techs'
group by tickets

2 个答案:

答案 0 :(得分:0)

您当前的代码看起来不错,但是,如果您寻找一些小技巧来使它真正变得棘手,则也可以考虑如下:

field_tech=logs_data[logs_data['Comment'].str.contains('Assigned:*Techs$')]

在上面的代码行中,如果我们知道票证类型始终为Assigned:Fields Techs,则可以这样进行修整,说票证名称以Assigned开头并始终以Techs结尾我们不会把所有东西都放完。

field_tech=logs_data[logs_data['Comment'].str.startswith('Assigned:Fields Techs')]

在上面的第二行代码中,我们使用的字符串开头为,也将起作用。

答案 1 :(得分:0)

我自己不知道答案。我终于明白了。 答案是这样:

logs_data[logs_data['Comment'].str.contains('Assigned:FieldsTechs')].groupby('Ticket')

 # Then I just get the length of the above for number of tickets assigned to tecks.

len(logs_data[logs_data['Comment'].str.contains('Assigned:Fields Techs')].groupby('Ticket'))