1. ホーム
  2. python

[解決済み] pandasのデータフレームでTimestampカラムからタイムゾーンを削除する方法

2023-04-06 21:52:43

質問

私は PandasはFX DataFrameのタイムゾーンを変更します。 を読みましたが、sqlite3データベースとの相互運用のために、私のデータフレームのtimeカラムをtimezone naiveにしたいと思います。

私のpandas dataframeのデータはすでにUTCデータに変換されていますが、私はデータベースでこのUTCタイムゾーン情報を維持する必要がないようにしたいです。

他のソースから得られたデータのサンプルを考えると、次のようになります。

print(type(testdata))
print(testdata)
print(testdata.applymap(type))

を与える。

<class 'pandas.core.frame.DataFrame'>
                        time  navd88_ft  station_id  new
0  2018-03-07 01:31:02+00:00  -0.030332          13    5
1  2018-03-07 01:21:02+00:00  -0.121653          13    5
2  2018-03-07 01:26:02+00:00  -0.072945          13    5
3  2018-03-07 01:16:02+00:00  -0.139917          13    5
4  2018-03-07 01:11:02+00:00  -0.152085          13    5
                                     time        navd88_ft     station_id  \
0  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
1  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
2  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
3  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   
4  <class 'pandas._libs.tslib.Timestamp'>  <class 'float'>  <class 'int'>   

             new  
0  <class 'int'>  
1  <class 'int'>  
2  <class 'int'>  
3  <class 'int'>  
4  <class 'int'>  

しかし

newstamp = testdata['time'].tz_convert(None)

は最終的にエラーを出します。

TypeError: index is not a valid DatetimeIndex or PeriodIndex

カラムをタイムゾーンナイブのタイムスタンプに置き換えるにはどうしたらよいでしょうか?

どのように解決するのですか?

カラムは必ず datetime を使用した後、例えば pd.to_datetime . 次に tz_localize を使ってタイムゾーンを変更すると、素朴なタイムスタンプはタイムゾーンに対応する None :

testdata['time'].dt.tz_localize(None)

カラムがインデックスでない限り ( DatetimeIndex ) の場合は .dt アクセサー へのアクセスに使用されなければなりません。 pandasの日付関数 .