我有一个熊猫DataFrame看起来像这样: 我手动添加了周列,它们的类型为int。 我想按周,月,年对数据进行分组,即:2016年1月第1周,2016年1月第2周,2016年2月第2周。问题是我希望结果是一个DataFrame,其中Data1是列和Data2的总和是列的平均值。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在尝试创建一个报告,该报告按每年的星期几分组。
我有一个看起来像这样的df:
s1 s2 srd
dt
2004-02-04 11:21:00 2365.79 2372.37 -7.0
2004-02-05 10:15:00 2365.79 2368.03 -2.0
2004-02-17 06:43:00 2421.05 2425.26 -4.0
2004-02-17 12:43:00 2418.42 2420.53 -2.0
2004-02-17 12:44:00 2420.39 2420.53 -0.0
dt索引采用日期时间格式。
我正在寻找的是一个看起来像这样的数据框(我只需要srd列,就可以对函数进行分组,例如sum,count等):
srd
dayOfWeek year
Mon 2004 10
2005 11
2006 8
2007 120
Tues 2004 105
2005 105
我已经尝试过dayOfWeekDf = df.resample('B')
,但是我得到了一个看起来像是按周数分割的数据dayOfWeekDf = df.resample('B')
。
我也尝试了df.groupby([df.index.weekday, df.index.year])['srd'].transform('sum')
,但是由于某种原因它甚至没有分组,因为我得到了以下( 2月17日出现3次)。
srd
dt
2004-02-04 11:21:00 81.0
2004-02-05 10:15:00 203.0
2004-02-17 06:43:00 37.0
2004-02-17 12:43:00 37.0
2004-02-17 12:44:00 37.0
如果要在索引中使用dayOfWeek
和year
名称,可以为其分配:
>>> df.assign(year=df.index.year, dayOfWeek = df.index.weekday_name).groupby(['dayOfWeek','year']).srd.sum()
dayOfWeek year
Thursday 2004 -2.0
Tuesday 2004 -6.0
Wednesday 2004 -7.0
Name: srd, dtype: float64
否则,您可以使用自己的操作方式,但可以省略transform
:
>>> df.groupby([df.index.weekday_name, df.index.year])['srd'].sum()
dt dt
Thursday 2004 -2.0
Tuesday 2004 -6.0
Wednesday 2004 -7.0
Name: srd, dtype: float64
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.