我有一个数据帧df
,它看起来像这样,其中没有设置索引:
df.head()
year month inch mm
0 1981 2 0.00 0.000
1 1981 3 4.82 122.428
2 1981 4 6.45 163.830
3 1981 5 5.03 127.762
4 1981 6 1.25 31.750
(1)首先,我只想选择1987年到2017年之间的年份。在
(2)然后我想按年份对选择的月份进行分组:MAM(so3-5)、JJAS(6-9)和OND(10-12),并将这些月份的mm
列相加。在
结果可能是这样的:
^{pr2}$我不确定如何完成第1部分,但我知道对于第2部分,我需要将month
列转换为日期时间对象。在
然后我将通过以下方式定义兴趣月份:
MAM = df.iloc[df.index.month.isin(np.r_[3:6])]
JJAS = df.iloc[df.index.month.isin(np.r_[6:10])]
OND = df.iloc[df.index.month.isin(np.r_[10:13])]
但现在我得到了一个错误AttributeError: 'RangeIndex' object has no attribute 'month'
。在
提前谢谢!在
这里有一个稍微不同的方法:使用
year
和month
来构建索引,然后使用一个UDFgroupby()
。在示例数据:
现在根据年份进行子集并构建索引:
^{pr2}$然后使用
year
和月份分隔函数groupby:第一部分很简单。使用
pd.Series.between
:如果
year
未排序,我建议先排序df
,然后使用sort_values(subset='year')
进行排序。在在下一部分中,一个解决方案将涉及生成一个}转换为映射字符串,并对其进行分组。在
^{pr2}$dict
映射,然后使用map
将{相关问题 更多 >
编程相关推荐