[英]Pandas time series resampling with month and with group by column
如何使用月份和按一个列分组并汇总另一列的平均值来对dateindex进行重新采样。
数据框示例:
bts_name duration
cleareddate
2019-01-19 1002_NUc_Marathalli 95
2019-01-21 1002_NUc_Marathalli 188
2019-02-11 1002_NUc_Marathalli 1332
2019-04-12 1002_NUc_Marathalli 940
2019-01-11 1003_IU2_Munnekolalu 73
我正在尝试使用频率月份并按bts_name
并sum
每个月的持续时间。
您可以reset_index
将cleareddate
字段设置为cleareddate
框中的一列。 我将用month创建一个新列,然后您可以对此进行简单的groupby
。
df.reset_index(inplace=True)
df['month'] = df.cleareddate.dt.month
df.groupby(['month','bts_name']).agg('sum').duration
笔记:
reset_index
行之后添加df.cleareddate = pd.to_datetime(df.cleareddate)
行。 编辑:在与@sriman的评论中进行讨论之后,我使用了pandas resample方法实现了上述方法。
# your data
df = pd.DataFrame({
'bts_name': ['1002_NUc_Marathalli','1002_NUc_Marathalli',
'1002_NUc_Marathalli','1002_NUc_Marathalli',
'1003_IU2_Munnekolalu'],
'duration': [95,188,1332,940,73]
}, index=pd.to_datetime(['2019-01-19','2019-01-21',
'2019-02-11','2019-04-12','2019-01-11']))
# solution
def resample(group):
return group.resample('M').sum()
result = df.groupby('bts_name').apply(resample)
# result
print(result)
duration
bts_name
1002_NUc_Marathalli 2019-01-31 283
2019-02-28 1332
2019-03-31 0
2019-04-30 940
1003_IU2_Munnekolalu 2019-01-31 73
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.