私は forex DataFrameのタイムゾーンを変更するパンダ を読みましたが、sqlite3データベースとの相互運用性のために、データフレームのタイムゾーンの時間列を単純にしたいと思います。
My pandasデータフレームのデータはすでに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
列をタイムゾーンの単純なタイムスタンプに置き換えるにはどうすればよいですか?
tz_localize
を使用してタイムゾーンを変更できます。単純なタイムスタンプはタイムゾーンNone
に対応します。
testdata['time'].dt.tz_localize(None)
列がインデックスでない限り、メソッドdt
を呼び出してpandas datetime関数にアクセスする必要があります。