使用熊猫计算累计结果的频率
广泛地说,我有来自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