获取熊猫DataFrame的复杂平均值

用户名

我有一个简单的DataFrame有2列-日期和值。我需要创建另一个DataFrame,其中包含每年每个月的平均值。例如,我有2015年1月1日至2018年12月31日的每日数据,我需要2015年,2016年等每个月的平均值。哪种方法最简单?

耶斯列尔

您可以使用Series.dt.to_period按月份汇总mean

df['date'] = pd.to_datetime(df['date'])
df1 = df.groupby(df['date'].dt.to_period('m'))['col'].mean().reset_index()

年和月分别放在单独的列中的另一种解决方案:

df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df1 = df.groupby(['year','month'])['col'].mean().reset_index()

样品

df = pd.DataFrame({'date':['2015-01-02','2016-03-02','2015-01-23','2016-01-12','2015-03-02'],
                   'col':[1,2,5,4,6]})
print (df)
         date  col
0  2015-01-02    1
1  2016-03-02    2
2  2015-01-23    5
3  2016-01-12    4
4  2015-03-02    6

df['date'] = pd.to_datetime(df['date'])
df1 = df.groupby(df['date'].dt.to_period('m'))['col'].mean().reset_index()
print (df1)
      date  col
0  2015-01    3
1  2015-03    6
2  2016-01    4
3  2016-03    2

df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df2 = df.groupby(['year','month'])['col'].mean().reset_index()
print (df2)
   year  month  col
0  2015      1    3
1  2015      3    6
2  2016      1    4
3  2016      3    2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章