web-dev-qa-db-ja.com

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

私は 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

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

10
Dave X

tz_localizeを使用してタイムゾーンを変更できます。単純なタイムスタンプはタイムゾーンNoneに対応します。

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

列がインデックスでない限り、メソッドdtを呼び出してpandas datetime関数にアクセスする必要があります。

16
MaFF