Pandas 为给定列指定行中某个值的每个条目的频率

Pandas 为给定列指定行中某个值的每个条目的频率,pandas,Pandas,此数据帧是通过timeseries重新采样操作获得的,如下所示 Ticket Priority Submit Date 2018-01-02 04:00:00 1 P3 - Normal 2018-01-02 08:00:00 18 P3 - NormalP3 - NormalP3 - NormalP3 - NormalP3... 2018-01-02 12:00:00 23 P2 - HighP3 - Norm

此数据帧是通过timeseries重新采样操作获得的,如下所示

                    Ticket  Priority
Submit Date     
2018-01-02 04:00:00      1  P3 - Normal
2018-01-02 08:00:00     18  P3 - NormalP3 - NormalP3 - NormalP3 - NormalP3...
2018-01-02 12:00:00     23  P2 - HighP3 - NormalP3 - NormalP3 - NormalP3 -...
2018-01-02 16:00:00      1  P3 - Normal
2018-01-02 20:00:00      0  0
2018-01-03 00:00:00      0  0
2018-01-03 04:00:00      1  P3 - Normal
2018-01-03 08:00:00      3  P3 - NormalP3 - NormalP3 - Normal
我希望得到的是这样的东西:

                    Ticket  Priority
Submit Date     
2018-01-02 04:00:00      1  P3 - Normal = 1
2018-01-02 08:00:00     18  P3 - Normal = 4
2018-01-02 12:00:00     23  P2 - High   = 1
                            P3 - Normal = 3
2018-01-02 16:00:00      1  P3 - Normal = 1
2018-01-02 20:00:00      0  0
2018-01-03 00:00:00      0  0
2018-01-03 04:00:00      1  P3 - Normal = 1
2018-01-03 08:00:00      3  P3 - Normal = 3
其中,“优先级”列列出了票证类型以及每种票证类型的发生次数

def get_priorities(x):
    types = ['Normal','High']
    if x == 0:
         return 0
    else:
        z = []
        for y in types:
            if y in x:
                z.append(str(x[:2]+ '-' + '{} = '.format(y) + str(x.count(y))))
        return ' '.join(z)
这应该是您的自定义函数,并使用lambda将其应用于数据帧

df['Priority'] = df['Priority'].apply(lambda x: get_priorities(x))
如果这对你不起作用,请告诉我