分组/计数

2024-10-02 22:28:38 发布

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

嗨,我正在尝试让我的脚本计算它在指定列中看到相同单词的次数,其中一些列的多个单词之间用逗号分隔

例如—

Labels                        Labs
a1, b3                         1
a2                             3
b3                             1

我想要两个输出

Labels  # of labels
a1           1
b3           2


Labels       Lab1     Lab3
a1            1        0
a2            0        1
b3            2        0

我试图使用groupby进行计数,但我在excel中得到的唯一输出是下面的,我无法知道它们属于什么

20
2
1
7
7

我一直在玩这个,但一直得到上面显示的相同结果

df1 = df.groupby('Labs').count()

Tags: of脚本a2labelsa1单词次数b3
1条回答
网友
1楼 · 发布于 2024-10-02 22:28:38

  1. 首先将逗号分隔的字符串转换为列表
  2. 使用df.explode()展开条目
  3. 数据透视聚合(组大小所属的概念)可以通过df.pivot_table()实现

设置

df = pd.read_csv(io.StringIO("""
Labels                        Labs
a1, b3                         1
a2                             3
b3                             1
"""), sep=r"\s{2,}", engine="python")

# split string into list (assume consistent separator pattern)    
df["Labels"] = df["Labels"].str.split(", ")

第一次输出:

df.explode("Labels").groupby("Labels").size()

Out[69]:
Labels
a1    1
a2    1
b3    2
dtype: int64

第二次输出:

df.explode("Labels").pivot_table(index="Labels", columns="Labs", aggfunc="size")\
    .fillna(0).astype(int)

Out[70]: 
Labs    1  3
Labels      
a1      1  0
a2      0  1
b3      2  0

相关问题 更多 >