问题描述
我读过一个由每日条目组成的考勤卡 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]