繁体   English   中英

用月份和按列分组的熊猫时间序列重采样

[英]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_namesum每个月的持续时间。

您可以reset_indexcleareddate字段设置为cleareddate框中的一列。 我将用month创建一个新列,然后您可以对此进行简单的groupby

df.reset_index(inplace=True)
df['month'] = df.cleareddate.dt.month
df.groupby(['month','bts_name']).agg('sum').duration

笔记:

  1. 我假设索引的类型为datetime。 如果不是这种情况,请在reset_index行之后添加df.cleareddate = pd.to_datetime(df.cleareddate)行。
  2. 请注意,两个不同年份中的月份将被分组为相同的。 您还需要按年份分组吗? 如果是这样,请添加年份的另一列,然后将该术语添加到您的分组依据列

编辑:在与@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM