id vi dates f_id
0 5532714 0.549501 2015-07-07 ff_22
1 5532715 0.540969 2015-07-08 ff_22
2 5532716 0.531477 2015-07-09 ff_22
3 5532717 0.521029 2016-07-09 ff_22
4 5532718 0.509694 2017-07-11 ff_22
在上面的数据框中,我想计算气候学,即一个数据框跨越多年的日平均值。目前我尝试了以下方法:
df.index = pd.to_datetime(df.dates)
df.groupby([df.index.month, df.index.day])['vi'].transform('mean')
我希望输出没有多索引。你知道吗
如果我理解正确,您需要创建一个分类索引来分组。我选择用
'%b, %d'
格式化日期,但是您可以使用从strftime.org选项派生的任何月/日组合。你知道吗考虑由4年随机每日数据组成的数据帧
df
:我将选择从
2012
创建类别标签,因为这是闰年,将包含Feb 29
。通过创建类别,熊猫会知道Jan, 01
在Aug, 31
之前。你知道吗我认为您需要分配到新列:
如果有必要
reset_index
:但是将列
date
转换为datetime
似乎更好,那么reset_index
就没有必要了:如果由于某种原因无法将列转换为
datetime
,则可以使用:你知道吗-
transform
和aggregation
之间的区别:^{} 用于原始
DataFrame
中的新列-输出df
的大小不变,因此相同组的数据相同:但是,如果输出} 聚合大小发生了变化,但其他列不在输出中(如果需要,则需要按^{} 聚合每个列):
df
的^{相关问题 更多 >
编程相关推荐