Python 使用标准进行分组选择
我有多个网站,用户在不同的日期访问它们。我只希望在特定时间范围内首先访问的网站:Python 使用标准进行分组选择,python,pandas,Python,Pandas,我有多个网站,用户在不同的日期访问它们。我只希望在特定时间范围内首先访问的网站: sites = db.groupby('websitename') newWebsites = (sites['date'].min() >= '2018-02-17') & (sites['date'].min() < '2018-02-24') 我想做的是计算这些网站在接下来几周的用户数量。然后我做的是按websitename和date分组: siteDate
sites = db.groupby('websitename')
newWebsites = (sites['date'].min() >= '2018-02-17') &
(sites['date'].min() < '2018-02-24')
我想做的是计算这些网站在接下来几周的用户数量。然后我做的是按websitename
和date
分组:
siteDate = db.groupby(['websitename', 'date'])
调用siteDate['ga:Users'].sum()
已经给了我想要的:
websitename date
google.com 2018-04-03 1
facebook.com 2018-04-07 1
hooli.com 2018-02-17 1
2018-02-20 1
2018-03-07 1
2018-03-08 3
Name: users, Length: 794, dtype: int64
但现在我只想要特定的网站(在newWebsites中指定的网站。在本例中是hooli.com
)
现在我想从siteDate
中选择所有在newWebsites
中具有True
的网站。我试过:
siteDate[newWebsites]
但这会返回一个错误:“未找到列:False,True”
我理解,因为熊猫正在
siteDate
中查找不存在的True
和False
列。但是如何选择正确的网站呢?默认情况下,数据框上的[]
操作符选择列。要选择行,请使用.loc[]
:
siteDate['ga:Users'].sum().loc[newWebsites]
但由于我有一个groupby对象,这会导致以下错误:AttributeError:无法访问“DataFrameGroupBy”对象的可调用属性“loc”,请尝试使用“apply”method@HansBambel:抱歉,请立即尝试我的更新。如果它不太管用,就玩一玩。您的实际用例因其具有多索引标签而稍微复杂,并且您还没有给我们提供MVCE,因此我不能向您保证100%的工作代码,但这是总体思路。感谢您的想法!我使用
siteDate['ga:Users'].sum().loc[newWebsites[newWebsites].index]
siteDate['ga:Users'].sum().loc[newWebsites]