如何获取groupby返回的系列的索引标签?

问题描述

我读过一个由每日条目组成的考勤卡 CSV 文件:“用户”、“小时”。 我想知道提交了部分考勤卡(例如,每周少于 40 小时)的用户列表。

summed_entries = df.groupby('User')['Hours'].sum() 
# This returns me a Series of Users and their total hours logged. 

for item in summed_entries:
    if item < 40:
       print(???) # This is where I want to return the User,available to me as the Series index label. I am unclear how to go about this. 

解决方法

我不确定您为什么要在 Pandas 中实现 for 循环,这似乎足以满足您的目的:

summed_entries = df.groupby('User')['Hours'].sum()
summed_entries = summed_entries[summed_entries < 40]

获取姓名列表:

list(summed_entries.index.values)
,

您无需迭代即可发现,因为循环需要更多时间。相反,您可以执行以下操作

您可以在按条件分组时将索引重置为用户

summed_entries = df.groupby('User')['Hours'].sum().reset_index('Users')

现在不需要循环,您只需在数据框中定位记录

summed_entries.loc[summed_entries['hours'] < 40]