如何从DataFrame中获取特定用户的小时



我正试图从3个特定客户端获得最多的访问时间,我已经这样做了:

mostUserDict = dict(df['user_id'].value_counts()) 
mostClientDict = dict(df['client_id'].value_counts()) 
print(mostClientDict)

这将按desc顺序返回具有更多访问权限的用户,如:

{1480: 96, 1610: 94, 1607: 80, 1375: 74, 1710: 65, 1477: 58, 1691: 58, 1729: 44, 1717: 42,...}

获取所有用户的小时数:

clientsHours = df[['client_id', 'hour']].groupby('client_id').agg(lambda x: x.value_counts().index[0])print(clientsHours)

client_id      
901          18
1339         19
1372         11
1375         12
1379         20
...         ...

现在我需要从第一个字典中的前3个用户(在本例中为1480,1610,1607)中获取小时数。我知道我可以使用for循环,但有其他方法吗?

如果我理解正确,您可以获得前3名客户,然后像这样汇总他们的工时值:

import pandas as pd
df = pd.read_csv("your_data_set")
top_3_clients = df["client_id"].value_counts().head(3).index
df = df[df["client_id"].isin(top_3_clients)]
aggregate_hours = df.groupby("clientId").agg({"hours": "sum"})

你根据他们的价值计数获得所有客户,你保留前3名。然后只使用这3个过滤DataFrame,并聚合它们的hour列以求和。

如果需要多于3,只需将head(3)更改为所需的数字。

相关内容

最新更新