python - Pandas Excel groupby/count
问题描述
嗨,我正在尝试让我的脚本计算它在指定列中看到相同单词的次数,其中一些列有多个用逗号分隔。
例如 -
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.explode()展开条目。
- 可以通过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
推荐阅读
- typescript - 元素无情地有任何类型的打字稿
- wordpress - 如何更新我的 Wordpress 插件检查许可证和安装?
- python - 我的 Selenium 已下载到不同版本的 python?(ImportError:没有名为 selenium 的模块)
- c# - 如何将数据库中的选定数据存储在C#中的数组中
- node.js - 键入“代理 | ((parsedUrl: URL) => 代理) | undefined' 不可分配给类型 'Agent | 不明确的'
- java - 是什么导致我的基本客户端/服务器套接字程序中的循环在第二次尝试时失败?
- php - 如果选择了特定类型的人,则有条件地取消设置结帐字段
- javascript - 在javascript中使用DeviceOrientation事件时解决云台锁定的最简单方法 - 如何制作完美的水平仪/气泡级应用程序
- css - iframe 不更新 Safari 中的高度
- javascript - react: ReactGridLayout.children[0].x 必须是数字