我读了Pandas change timezone for forex DataFrame但我想让我的数据帧时区的时间列天真,以便与 sqlite3 数据库进行互操作。
我的 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
我该怎么做才能用时区原始时间戳替换该列?
最佳答案
该列必须是 datetime
dtype,例如在使用 pd.to_datetime
之后.
然后,您可以使用 tz_localize
要更改时区,一个天真的时间戳对应于时区 None
:
testdata['time'].dt.tz_localize(None)
除非该列是索引 ( DatetimeIndex
),否则 .dt
accessor必须用于访问 pandas datetime functions .
关于python - 如何从 Pandas 数据框中的时间戳列中删除时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198068/