在其中创建新列时,索引会自动替换

时间:2018-11-02 23:30:07

标签: python pandas dataframe

我目前正在对按日期(DD / MM / YY)索引的Pandas DataFrame做一些练习。当前的练习要求我对Year进行分组以获取平均年值。 因此,我试图做的是创建一个仅包含从DataFrame索引中提取的年份的新列。我写的代码是:

data["year"] = [t.year for t in data.index]
data.groupby("year").mean()

但是由于某种原因,新的“年份”列最终替换了以前的完整日期索引(该索引甚至没有成为“标准”列,但它显然消失了),这有点令人惊讶。怎么会这样?

谢谢!

1 个答案:

答案 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