关于Pandas中groupby代码里['id']作用的技术咨询
解释
df.groupby('tshirts')['id'].count()里['id']的作用 核心用途
['id']就是指定分组后要统计的目标列,后面的count()方法只盯着这一列,数每个tshirts分组里这一列的非空值数量。
之所以选id,大多是因为id是唯一标识(比如用户ID、订单ID),基本不会有空值,用它的count()就能直接得到每个T恤款式对应的总记录数。要是换其他可能有空值的列,count()会自动跳过空值,结果就不是总条数了。
实际示例
先造个测试用的DataFrame:
import pandas as pd data = { 'tshirts': ['白T', '黑T', '白T', '黑T', '白T', '灰T'], 'id': [1, 2, 3, 4, 5, 6], 'size': ['M', 'L', None, 'XL', 'M', 'S'] } df = pd.DataFrame(data)
运行你的代码
df.groupby('tshirts')['id'].count()
输出结果
tshirts 黑T 2 灰T 1 白T 3 Name: id, dtype: int64
这个结果直接告诉我们:黑T有2条记录,灰T1条,白T3条,完全对应每个款式的总条数。
对比:不指定['id']的情况
如果直接写df.groupby('tshirts').count(),会统计所有列的非空值:
df.groupby('tshirts').count()
输出:
id size tshirts 黑T 2 2 灰T 1 1 白T 3 2 # 白T的size列有一个空值,所以count结果是2,不是总条数3
对比就能看出,['id']帮我们精准锁定了无空值的id列,直接拿到每个分组的总记录数,避免了其他列空值的干扰。
补充说明
要是你想统计其他列的非空值,把['id']换成对应列名就行。比如想统计每个T恤款式下有尺码记录的数量,就写df.groupby('tshirts')['size'].count()。
内容的提问来源于stack exchange,提问作者DatBigD
相关产品推荐
相关产品推荐

