Pandas相当于SQL YEAR(GETDATE())

时间:2017-06-26 12:54:25

标签: python-3.x sorting date pandas filter

我是一名熊猫新手但在SQL方面还不错。我经常在SQL中使用的一个函数是:

YEAR(date_format_data) = (YEAR(GETDATE())-1) 

这将获得去年的所有数据。有人可以帮我理解如何在Pandas中做同等的事情吗?

以下是一些示例数据:

Date     Number
01/01/15 1
01/02/15 2
01/01/15 3
01/01/16 2
01/01/16 1

这是我对代码的最佳猜测:

df = df[YEAR('Date') == (YEAR(GETDATE()) -1)].agg(['sum'])

此代码将返回值“3”。

提前感谢你的帮助,我很难搞清楚我确定的很简单。

2 个答案:

答案 0 :(得分:2)

我认为你可以这样做:

prev_year = pd.datetime.today().year - 1
df.loc[df['Date'].dt.year == prev_year]
只有当.dt.year列属于Date dtype时,

PS datetime访问者才有效。如果不是这种情况,您可能希望首先将该列转换为datetime dtype:

df['Date'] = pd.to_datetime(df['Date'], errors='coerce')

答案 1 :(得分:0)

对于pandas,请先按pd.to_datetime

将日期列转换为时间戳
df['Date2'] = pd.to_datetime(df['Date'])

pd.to_datetime有一个格式参数来指定输入日期格式)然后你有

df['Date2'].year