使用熊猫计算累计结果的频率

广泛地说,我有来自Kaggle的智能量表数据集,我试图按房子计算第一个和最后一个量度,然后尝试聚合以查看有多少房屋开始(或结束)报告给定的一天。我接受的方法完全不同于我在下面追求的路线。使用熊猫计算累计结果的频率

在SQL中,探索数据时,我经常使用类似以下内容:

SELECT Max_DT, COUNT(House_ID) AS HouseCount 

FROM

(

SELECT House_ID, MAX(Date_Time) AS Max_DT

FROM ElectricGrid GROUP BY HouseID

) MeasureMax

GROUP BY Max_DT

我想在熊猫复制这种逻辑和失败。我可以得到初始聚集,如:

house_max = house_info.groupby('House_Id').agg({'Date_Time' :['max']}) 

但是我没有得到外部查询。具体来说,我不知道聚合列被称为什么。如果我做了一个describe(),它在上面的例子中显示为Date_Time。我试图重新命名列:

house_max.columns = ['House_Id','Max_Date_Time'] 

我发现了一个StackOverflow discussion有关重命名聚集的结果,并试图将其应用:

house_max.columns = ["_".join(x) for x in house_max.columns.ravel()] 

我还发现,在说明()返回DATE_TIME作为列名。

start_end_collate = house_max.groupby('Date_Time_max')['House_Id'].size() 

在重命名示例中,我的第二个查询无法找到Date_Time或Max_Date_Time。在后面的例子中,Ravel代码在运行时似乎没有找到House_Id。

回答:

这似乎很奇怪,我想你的代码将无法找到House_Id字段。在House_Id上执行groupby之后,它将成为您不能作为列引用的索引。

这应该工作:

house_max = house_info.groupby('House_Id').agg({'Date_Time' :['max']}) 

house_max.columns = ["_".join(x) for x in house_max.columns.ravel()]

start_end_collate = house_max.groupby('Date_Time_max').size()

或者你可以删除多列:

house_max.columns = house_max.columns.droplevel(0) 

start_end_collate = house_max.groupby('max').size()

以上是 使用熊猫计算累计结果的频率 的全部内容, 来源链接: utcz.com/qa/260566.html

回到顶部