私は読む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
列はdatetime
dtypeである必要があります。たとえば、pd.to_datetime
.その後、tz_localize
タイムゾーンを変更するには、タイムゾーンに対応する単純なタイムスタンプを使用しますNone
。
testdata['time'].dt.tz_localize(None)
列がインデックスでない限り(DatetimeIndex
)、.dt
アクセサアクセスするには使用する必要がありますパンダの日付時刻関数。