python - 创建多年的月均值列
问题描述
我有一个“日期”列和一个“tmax”列。我想再创建一个列来显示每年每个月的平均值。我试过了
df['date']=pd.date_range(start='1/01/1980', end='31/12/2015')
#df['date'] = df['date'].dt.strftime('%d-%b-%Y') format of date
df['means'] = df.resample('M', on='date').mean()
我有
ValueError: Wrong number of items passed 4, placement implies 1
示例值如下:
date tmax
1-Jan-80 15.773
2-Jan-80 18.342
...
30-Jan-80 15.851
31-Jan-80 11.962
...
1-Dec-80 15.773
2-Dec-80 18.342
...
30-Dec-80 15.851
31-Dec-80 11.962
1-Jan-81 15.773
2-Jan-81 18.342
...
30-Jan-81 15.851
31-Jan-81 11.962
...
1-Dec-2015 15.773
2-Dec-2015 18.342
...
30-Dec-2015 15.851
31-Dec-2015 11.962
解决方案
为原始数据框创建单独的数据框mean
并将其合并,然后回填 NaN 值。
import numpy as np
# calculate & store `mean` in a new dataframe
df2 = df.set_index('date')['tmax'].resample('M', how=[np.mean]).reset_index(drop=False)
# merge 2 dataframes
pd.merge(df, df2, on='date', how='left').fillna(method='bfill')
推荐阅读
- python - 5x5 滑动拼图快速和低移动解决方案
- c# - 带有过滤器的 C# 中的 MongoDB Linq 查询
- node.js - node.js 无头浏览器仅访问 javascript 全局变量
- java - XPathFactory#newInstance() 未能为默认对象模型创建 XPathFactory:http://java.sun.com/jaxp/xpath/dom
- image - Xamarin:从 url 列表到使用图像填充 CollectionView
- node.js - TypeScript,Apollo GraphQL 产生不可分配的节点获取错误
- laravel - 避免 SESSION_DOMAIN 应用于 Laravel 中的子域
- python - 将字典变量放入列表 - 打乱它们 - 将它们分成两个嵌套的字典
- python - 使用 Pandas 熔化
- javascript - 滚动到顶部时,ScrollTop 不会恢复