M.E*_*.E. 8 python datetime dataframe pandas
我有以下时间序列:
Date Value
0 2006-01-03 18
1 2006-01-04 12
2 2006-01-05 11
3 2006-01-06 10
4 2006-01-09 22
... ... ...
3510 2019-12-23 47
3511 2019-12-24 46
3512 2019-12-26 35
3513 2019-12-27 35
3514 2019-12-30 28
Run Code Online (Sandbox Code Playgroud)
我想计算每月的平均值。所以每个月的伪代码如下:
所需的输出类似于:
Date Value
0 2006-01 17.45
1 2006-02 18.23
2 2006-04 16.79
3 2006-05 17.98
... ... ...
166 2019-11 37.89
167 2019-12 36.34
Run Code Online (Sandbox Code Playgroud)
我尝试过这个但没有成功:
data = data.set_index('Date')
data.resample('M')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-28-435afe449f1f> in <module>
47 data = pd.DataFrame(dataList, columns=('Date', 'Value'))
48 data = data.set_index('Date')
---> 49 data.resample('M')
Run Code Online (Sandbox Code Playgroud)
cs9*_*s95 13
我们可以将您的日期时间列转换为PeriodIndex每月频率,然后使用以下方法取平均值GroupBy.mean:
df.groupby(pd.PeriodIndex(df['Date'], freq="M"))['Value'].mean()
Date
2006-01 14.6
2019-12 38.2
Freq: M, Name: Value, dtype: float64
Run Code Online (Sandbox Code Playgroud)
df.groupby(pd.PeriodIndex(df['Date'], freq="M"))['Value'].mean().reset_index()
Date Value
0 2006-01 14.6
1 2019-12 38.2
Run Code Online (Sandbox Code Playgroud)
这种方法的一个警告是没有显示缺失的月份。如果这很重要,请以相同的方式使用set_index和。resample.mean
| 归档时间: |
|
| 查看次数: |
28227 次 |
| 最近记录: |