2017-06-26 6 views
1

私はパンダの初心者ですが、SQLはまともです。 SQLでよく利用する関数は次のとおりです。SQLに相当するパンダ(GETDATE())

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

これは私に昨年のすべてのデータを取得します。誰かが私にパンダで同等のやり方を理解するのを手伝ってもらえますか?ここで

は、いくつかの例のデータです:

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」の値を返します。

ご協力いただきありがとうございます。私が本当に簡単なことはわかりません。私はあなたがこのようにそれを行うことができると思い

ミー

+0

まず、 'Date'カラムを' df.Date = pd.to_datetime(df.Date) ' – Abdou

+0

'pd.to_datetime'を使用している場合、日付が標準形式でないと、パフォーマンスが問題になることがあります。 [This](https://stackoverflow.com/questions/29882573/pandas-slow-date-conversion)は便利かもしれません。 – akilat90

答えて

2

prev_year = pd.datetime.today().year - 1 
df.loc[df['Date'].dt.year == prev_year] 

PS .dt.yearアクセサはDate列がdatetime DTYPEである場合にのみ動作します。それはケースではない場合は、最初datetime DTYPEにその列を変換したいことがあります。まず、パンダのために

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

あなたのサンプルコードで '1日'の代わりに '1年'を意味しましたか? – SDS

+0

@SDS、私が 'GETDATE() - 1'を知っている限り - 昨日(今日はマイナス1日)です。別の何かを意味しましたか? – MaxU

+0

申し訳ありませんがMaxU、あなたは正しいです - 私は一日ではなく、一年前に戻って行きたいです。私のエラーは、上のコードを更新します。 – SDS

0

pd.to_datetime

df['Date2'] = pd.to_datetime(df['Date']) 

pd.to_datetimeによってタイムスタンプにあなたの日付列を変換することにformatパラメータを持っています入力した日付の形式を指定してください)

df['Date2'].year 
関連する問題