pandas 数据框中列表中元素的条件频率

Conditional frequency of elements within lists in pandas data frame

我在 pandas 中有一个这样的数据框:

STATUS      FEATURES
  A          [x,y,z]
  A          [t, y]
  B          [x,p,t]
  B           [x,p]

我想根据状态计算功能列表中元素的频率。 所需的输出将是:

STATUS       FEATURES      FREQUENCY
  A             x              1
  A             y              2
  A             z              1
  A             t              1
  B             x              2
  B             t              1
  B             p              2

让我们做 explode , groupby size

s=df.explode(['FEATURES']).groupby(['STATUS','FEATURES']).size().reset_index()

使用DataFrame.explode and SeriesGroupBy.value_counts:

new_df = (df.explode('FEATURES')
            .groupby('STATUS')['FEATURES']
            .value_counts()
            .reset_index(name='FRECUENCY'))
print(new_df)

输出

  STATUS FEATURES  FRECUENCY
0      A        y          2
1      A        t          1
2      A        x          1
3      A        z          1
4      B        p          2
5      B        x          2
6      B        t          1