この形式をオブジェクトとして持っています2020-11-1810:36:29.772234 +0000 UTC、日時に変換したい

Nov 23 2020

2020-11-20 23:07:59.381081 +0000 UTC

パンダを含むcsvファイルを読み取っていますが、データフレームにオブジェクトであるタイムスタンプ列があります。日時に変換できず、+ 0000UTCをフォーマットに読み取ることができませんでした

私は以下を試しました:

datetimeObj = datetime.strptime('2020-11-21 22:16:25.389601 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %Z')

しかし、%Zは私にエラーを与えています。PythonとPandasの世界の初心者へのアドバイスはありますか?

回答

3 LorenaGil Nov 23 2020 at 04:10

%Zの前に%zも追加する必要があります。

  • %zは、+ HHMMまたは-HHMMの形式のオフセットを指します。
  • %Zはタイムゾーン名を参照します。

これを試して:

datetime_object = datetime.strptime('2020-11-20 23:07:59.381081 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %z %Z')
1 MrFuppes Nov 23 2020 at 17:31

pandas DataFrameにその形式の日時文字列があると仮定すると解析されない+0000ため、同時に削除することをお勧めします。pd.to_datetime+0000UTC

import pandas as pd

df = pd.DataFrame({'timestamp':["2020-11-20 23:07:59.381081 +0000 UTC"]})

df['datetime'] = pd.to_datetime(df['timestamp'].str.replace(" +0000", "", regex=False))

# df['datetime']
# 0   2020-11-20 23:07:59.381081+00:00
# Name: datetime, dtype: datetime64[ns, UTC]

なぜ単にストリップしないのUTCですか?+0000のUTCオフセットとは対照的に、それは明白です。+0000は、タイムスタンプで表される時刻にUTC +0が発生するタイムゾーンから発生する可能性もあります。