鉴于此数据
import pandas as pd
dt1 = pd.Timestamp('2018-01-11 23:00:00')
dt2 = pd.Timestamp('2018-01-12 01:00:00')
ts = pd.date_range(dt1, dt2, freq='15Min', tz='Europe/Vienna')
values = list(range(ts.shape[0]))
df = pd.DataFrame(values, index=ts)
结果df
看起来像
0
2018-01-11 23:00:00+01:00 0
2018-01-11 23:15:00+01:00 1
2018-01-11 23:30:00+01:00 2
2018-01-11 23:45:00+01:00 3
2018-01-12 00:00:00+01:00 4
2018-01-12 00:15:00+01:00 5
2018-01-12 00:30:00+01:00 6
2018-01-12 00:45:00+01:00 7
2018-01-12 01:00:00+01:00 8
操作
df.to_excel('test.xlsx')
在Excel 2013中导致以下内容
2018-01-11 22:00:00 0
2018-01-11 22:15:00 1
2018-01-11 22:30:00 2
2018-01-11 22:45:00 3
2018-01-12 23:00:00 4
2018-01-12 23:15:00 5
2018-01-12 23:30:00 6
2018-01-12 23:45:00 7
2018-01-12 00:00:00 8
也就是说,日期时间显示为UTC,但在当地时间午夜显示错误,即2018-01-12 23:00:00
时应为2018-01-11 23:00:00
。现在使用Excel可能会有语言设置和显示选项干扰,但也许我的Pandas用法已经错了?
OS语言设置为美国英语,没有Excel特定设置。 Pandas版本为0.23.0
,Python 3.6
答案 0 :(得分:1)
Excel在日期时间内不支持时区。将datetime / time对象中的tzinfo设置为None或使用' remove_timezone'
ts = pd.date_range(dt1, dt2, freq='15Min')
答案 1 :(得分:0)
我收到此错误(完全追溯):
您是如何设法获取代码的?这是我用过的:
import pandas as pd
dt1 = pd.Timestamp('2018-01-11 23:00:00')
dt2 = pd.Timestamp('2018-01-12 01:00:00')
ts = pd.date_range(dt1, dt2, freq='15Min', tz='Europe/Vienna')
values = list(range(ts.shape[0]))
df = pd.DataFrame(values, index=ts)
df.to_excel('test.xlsx')
print ("ready")
如果我删除, tz='Europe/Vienna'
,那么它可以正常运行:
在Python中,我使用print (df)
得到了相同的内容: