-3

这是我现在的输出

Year        Value
2010-12-31  50
2011-12-31  38
2012-12-31  84

这就是我要的

Year Value
2010 50
2011 38
2012 84

如何使用 pandas 获得所需的输出?

df["Year"] = pd.to_datetime(data["date"])
df.set_index("Year").groupby(pd.Grouper(freq="Y"))["Value"].sum()

我将频率设置为年份,并且值的总和完美地按年份计算。但是,年列显示日和月。我只想过年。

4

2 回答 2

1

尝试

df['Year'] = pd.to_datetime(df['date'])
out = df.groupby(df['Year'].dt.year)['Value'].sum().reset_index()
于 2020-11-15T00:49:53.360 回答
1

您也可以使用正则表达式来执行此操作。从文档

df["Year"] = df["Year"].str.findall(r"\d\d\d\d")[0]

如果您的日期模式一致,这将完全按照您的意愿返回 DataFrame。

于 2020-11-15T01:03:57.763 回答