GroupBy 每周在熊猫中与其他列一起计数
Posted
技术标签:
【中文标题】GroupBy 每周在熊猫中与其他列一起计数【英文标题】:GroupBy count on weekly in pandas with other columns 【发布时间】:2020-01-29 18:16:24 【问题描述】:我有一个如下图所示的df,这是一个地区的事故记录。
Sector RaisedDate Inspector_ID Priority
SE1 02-Aug-2019 ID1 High
SE2 04-Aug-2019 ID1 Low
SE2 06-Aug-2019 ID2 Medium
SE1 12-Aug-2019 ID1 High
SE2 11-Aug-2019 ID1 Low
SE1 13-Aug-2019 ID2 High
SE1 18-Aug-2019 ID1 Medium
SE2 21-Aug-2019 ID1 Medium
SE2 20-Aug-2019 ID2 High
SE1 23-Aug-2019 ID1 High
SE1 25-Aug-2019 ID1 Low
SE2 29-Aug-2019 ID2 High
SE1 25-Aug-2019 ID1 Low
SE1 25-Aug-2019 ID2 High
从上面我想准备下面的数据框
Sector #_Week1 #_Week2 #_Week3 #_Week4 #_Week5 No_of_High No_of_low
SE1 1 2 1 4 0 5 2
SE2 2 1 2 0 1 2 2
其中 #_Week1 = 第 1 周(包括 2019 年 8 月 1 日至 2019 年 8 月 7 日)登记的事故数量
#_Week2 = 第 2 周登记的事故数量(包括 2019 年 8 月 8 日至 2019 年 8 月 14 日)
#_Week3 = 第 3 周登记的事故数量(包括 2019 年 8 月 15 日至 2019 年 8 月 21 日)
#_Week4 = 第 4 周(包括 2019 年 8 月 22 日至 2019 年 8 月 28 日)登记的事故数量
#_Week5 = 第 3 周(包括 2019 年 8 月 29 日至 2019 年 8 月 31 日)登记的事故数量
No_of_High = 所有数据中该扇区的高优先级事故总数。
No_of_Low = 所有数据中该扇区的低优先级事故总数。
为此,我尝试了以下代码但不起作用
df.set_index('RaisedDate').groupby(pd.Grouper(freq='Weekly')).Sector.count()
【问题讨论】:
这不行吗?你哪里错了? Weekly 在参数中是不可接受的。试试'7D'
看看它是否有效。
您的数据从 2019 年 8 月 2 日开始。有理由在Aug-01
上开始分组吗?
【参考方案1】:
使用@Parth 所说的并将"Sector"
添加到groupby()
:
print(df.set_index('RaisedDate').groupby([
'Sector',
pd.Grouper(freq='7D'),
]).Sector.count().unstack())
RaisedDate 2019-08-02 2019-08-09 2019-08-16 2019-08-23
Sector
SE1 1 2 1 4
SE2 2 1 2 1
让你更接近你想要的。然后,您可以重命名列以匹配您的输出。
我还注意到我在第 4 周有值 4
和 1
,但没有第 5 周。不确定这对您来说是否有问题?
要添加高/低优先级列,您可以加入具有不同组的新数据框。
# store the weekly groups
date = df.groupby([
'Sector',
pd.Grouper(key='RaisedDate', freq='7D')
]).Sector.count().unstack()
# rename columns
date.columns = [f'weeki' for i in range(1, len(date.columns)+1)]
# store the priority groups
prio = (df.groupby([
'Sector',
'Priority'
]).Priority.count().unstack().drop(columns=[
'Medium',
]))
# join them
print(date.join(prio))
week1 week2 week3 week4 High Low
Sector
SE1 1 2 1 4 5 2
SE2 2 1 2 1 2 2
【讨论】:
以上是关于GroupBy 每周在熊猫中与其他列一起计数的主要内容,如果未能解决你的问题,请参考以下文章