【发布时间】:2020-11-26 05:43:03
【问题描述】:
您好,我正在使用 groupby 来计算数据中每种类型标签的计数,但它没有显示信息是什么,也没有计算所有标签。
作为参考,我将其设置为 tkinter GUI,它上传 CSV 并将其导出为带有分解信息的 xlsx。此外,我正在使用 pd.dataframe 为每一列指定一个名称。我创建了一个包含所有标签类型的列,我希望尽可能地显示计数,因为它不想显示它正在计数的标签。
为了澄清,我在终端中得到了我想要的输出(除了计数为 0 的标签),但我没有在 excel 中得到标签。我的输出是我在 excel 中看到的
我正在使用的代码
df1 = df.explode('Ticket_Labels').groupby(['Ticket_Labels'])[['Labels']].size()
输入示例
Ticket_Labels Labels
a1, b2 a1
a1 a2
a5 a5
b3, a1 b1
b2
b3
我的输出
3
1
1
1
期望的输出
a1 3
a2 0
a3 0
a5 1
b1 0
b2 1
b3 1
更新
我也尝试在输入 excel 时使用数据框。
df1 = df.explode('Ticket_Labels').groupby(['Ticket_Labels']).agg({'Labels':'size'})
df3 = pd.DataFrame({'Label':df10, 'Count': df1})
df3.to_excel (r'C:\Users\mcilvn\Desktop\test.xlsx', index = False, header = True)
我的输出如下
Label Count
a1 ('L', 'a', 'b', 'e', 'l', 's')
a2 ('L', 'a', 'b', 'e', 'l', 's')
更新
我也尝试过这个,因为我总共有 25 个标签,但并不是所有的票都使用了所有这些标签,所以我想为没有票的标签填写 0。
df10 只是所有标签的列表
df1 = df.explode('Ticket_Labels').groupby('Ticket_Labels').size().fillna(value = 0)
df3 = pd.DataFrame({'Labels': df10, 'Count': df1})
print (df1)
但我得到一个错误,数组长度 25 与索引长度 23 不匹配
【问题讨论】:
-
df.explode('Ticket_Labels') 的输出是什么样的?
-
不确定,它不允许我自己运行它。我得到 ValueError:(194, 18)中传递值的形状,索引暗示(158. 18)。我从上一个问题中得到答案,但他们没有帮助解释为什么它没有给我信息
-
我能够让 df.explode 自行工作以查看输出。因此,因为我将标签值作为 (a1, d3) 并带有逗号,所以它将整行加倍以便能够将它们分开。例如,lab1 为下一列的标签 (a1, d3) 将使其成为两行,a1 和 d3 在不同的行中,并且都在下一列中表示 lab1