pandasのタイムスタンプ列からタイムゾーンを削除する方法 質問する

pandasのタイムスタンプ列からタイムゾーンを削除する方法 質問する

私は読むPandas は外国為替データフレームのタイムゾーンを変更しますしかし、SQLite3 データベースとの相互運用性を確保するために、データフレームのタイムゾーンの時間列を単純にしたいと思います。

私のパンダデータフレーム内のデータはすでに 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

列をタイムゾーン固有のタイムスタンプに置き換えるにはどうすればよいですか?

ベストアンサー1

列はdatetimedtypeである必要があります。たとえば、pd.to_datetime.その後、tz_localizeタイムゾーンを変更するには、タイムゾーンに対応する単純なタイムスタンプを使用しますNone

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

列がインデックスでない限り(DatetimeIndex)、.dtアクセサアクセスするには使用する必要がありますパンダの日付時刻関数

おすすめ記事