2017-02-10 9 views
3

私は年と週によって形成されるいくつかのデータを持っています。ここでは、%Y%Wのようにフォーマットされているかのように日時と週のパンダ

week cases 
0 192801 7647 
1 192802 11427 
2 192803 11970 
3 192804 12920 
4 192805 14660 

週間のデータが見える小さなサンプルですが、私はpd.to_datetime(df.week, format = '%Y%W)経由日時に変換しようとすると、各年の最初の月の最初の日を受け取ります。

0 1928-01-01 
1 1928-01-01 
2 1928-01-01 
3 1928-01-01 
4 1928-01-01 

何が起こっていますか?週のデータを正しくフォーマットするにはどうすればよいですか?

答えて

0

(私は日一日を必要と信じている)日時に変換した後、あなたはそのようなシリーズ物にdt.strftimeを使用して日付をフォーマットすることができますが:

pd.to_datetime(df.week, format = '%Y%W').dt.strftime('%Y-%W') 
1

this threadから、それだけでいるようです週番号は日付を推測するのに十分ではありません。あなたは週の曜日も必要とします。 (それだけで0 /日曜日にデフォルト設定はありませんなぜ私は本当にわからない)

ので、以下では、あなたがやりたいようだ:

pd.to_datetime(df.week.map(lambda x: str(x)+'-0'), format="%Y%W-%w") 

私たちは、最初のデータは、その後、strであることを確認最後に「-0」を付ける(日曜日を意味する)。
次に、フォーマットで追加の%wを使用して「曜日」を取得します。

注:
動作を説明しているdatetime docsにメモがあります。曜日と暦年(%Y)が を指定された場合のstrptime()メソッドで使用
Section 8.1.8 -> Notes -> Bullet-point #7

は、%Uおよび%Wのみ 計算に使用されます。

+1

私はあなたが週から1を引く必要があり、あなたは 'map'を必要とせず、それをベクトル化すると思います。 ''%Y%W-%w '') ''%s ') ''%d' –

関連する問題