Python 分组/计数

Python 分组/计数,python,pandas,Python,Pandas,嗨,我正在尝试让我的脚本计算它在指定列中看到相同单词的次数,其中一些列的多个单词之间用逗号分隔 比如说- Labels Labs a1, b3 1 a2 3 b3 1 我想要两个输出 Labels # of labels a1 1 b3 2 La

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

比如说-

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()

  • 首先将逗号分隔的字符串转换为列表
  • 用于展开条目
  • 数据透视聚合(组大小所属的概念)可以通过以下方式实现
  • 设置

    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
    
    第二次输出:

    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
    

    当我在我这边尝试时,我无法获得这种输出。excel中的第二个输出在一列中显示为0 1 0,并在下一列中重复几次,顺序有所变化,但没有说明数字代表什么。第一次输出时,我得到了一些实际的数字,但它同样没有告诉我这些数字代表了什么。我试图找到一种方法来显示一些数据,这样你就可以更好地了解这些数据。大部分都是保密的。我不确定这是否是问题的一部分,但看起来,虽然标签的原始数据是我在上面显示它的方式,但过程的一部分使它看起来像这样['a1']或['a1,b3']不确定这是否是问题的一部分,也许我让它在错误的区域做这项工作?整个文件是一个tkinter,所以我用它来选择文件并导出新版本。它上传的第一部分我也让它做了很多工作,可能会导致括号内的标签和实验室名称。不幸的是,回答者无法调试没有提供的内容。Excel上的问题也超出了这个问题的范围。更合适的做法是就这些次要问题(例如,格式转换、脏数据、tkinter的I/O等)单独提问。在任何情况下,我相信这两个聚合的逻辑都完好无损,足够简洁,可以很好地理解。因此,我想我找到了如何正确地输入上述建议,以提供有关计数的正确信息,但它仍然没有告诉我计数的目的。因此,我使用pd.dataframe来尝试指定每段数据应该放在哪里,它将数字130行放在数据下方,而不是列的单元格2中,但我的其他数据都在相应的单元格中。是否有办法指定在pd.dataframe中放置数据的位置?抱歉,我对编程和自学仍然很陌生