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中放置数据的位置?抱歉,我对编程和自学仍然很陌生