我目前正在对按日期(DD / MM / YY)索引的Pandas DataFrame做一些练习。当前的练习要求我对Year进行分组以获取平均年值。 因此,我试图做的是创建一个仅包含从DataFrame索引中提取的年份的新列。我写的代码是:
data["year"] = [t.year for t in data.index]
data.groupby("year").mean()
但是由于某种原因,新的“年份”列最终替换了以前的完整日期索引(该索引甚至没有成为“标准”列,但它显然消失了),这有点令人惊讶。怎么会这样?
谢谢!
答案 0 :(得分:2)
对于示例数据框:
value
2016-01-22 1
2014-02-02 2
2014-08-27 3
2016-01-23 4
2014-03-18 5
如果您想保持自己的逻辑,只需要调用您想作为mean()
的列并使用transform()
,然后将其分配回value
列即可:
data['year'] = [t.year for t in data.index]
data['value'] = data.groupby('year')['value'].transform('mean')
收益:
value year
2016-01-22 2.500000 2016
2014-02-02 3.333333 2014
2014-08-27 3.333333 2014
2016-01-23 2.500000 2016
2014-03-18 3.333333 2014