Python 转换为csv时熊猫到csv日期时间不匹配

Python 转换为csv时熊猫到csv日期时间不匹配,python,pandas,csv,datetime,Python,Pandas,Csv,Datetime,我有一个数据帧,看起来像这样,时间戳是UTC秒 open high low close volumeto time 1530169200 6112.81 6120.62 6108.65 6111.63 2212255.01 1530170100 6111.63 6119.12 6106.45 6113.59 1

我有一个数据帧,看起来像这样,时间戳是UTC秒

               open     high      low    close    volumeto
time                                                      
1530169200  6112.81  6120.62  6108.65  6111.63  2212255.01
1530170100  6111.63  6119.12  6106.45  6113.59  1572299.36
1530171000  6113.59  6116.44  6104.34  6110.23  2792660.45
1530171900  6110.23  6123.71  6106.49  6123.71  2314140.04
1530172800  6121.33  6133.24  6121.18  6129.52  2037071.96
当我尝试将其写入csv时,这就是我得到的,我猜pandas假设提供的时间是本地时间,并将其抵消5小时30分钟,但我提供了UTC时间

1530149400,6112.81,6120.62,6108.65,6111.63,2212255.01:
1530150300,6111.63,6119.12,6106.45,6113.59,1572299.36:
1530151200,6113.59,6116.44,6104.34,6110.23,2792660.45:
1530152100,6110.23,6123.71,6106.49,6123.71,2314140.04:
1530153000,6121.33,6133.24,6121.18,6129.52,2037071.96:
我的代码如下所示

csv_string = io.StringIO()
df.to_csv(csv_string, line_terminator=':', header=False, date_format='%s')
print(csv_string.getvalue())

我如何告诉Pandas我提供了UTC时间,并且不希望在转换时对其进行偏移?

一种方法是首先让时间列知道时区。在您的情况下,假设您的数据帧被称为
df

df.index = df.index.tz_localize(tz='UTC')
现在,索引是时区感知的。然而,我不确定这是否是目前不同的原因

编辑 如果索引已经附加了一个tz,您可以像添加时区一样更改它,但是现在使用
tz\u convert
,正如您的错误所示。守则将变成:

df.index = df.index.tz_convert(tz='UTC')
但是,这也会修改时间。要使用时区UTC替换时区,您需要执行以下操作:

import pytz
df.index = [t.replace(tzinfo=pytz.utc) for t in df.index]
但是,在执行此操作之前,最好先检查时区,看看这是否对应于5:30的时差。此外,还应认识到,使用
date\u format='%s'
忽略时区信息,通常假定系统的时区。有关更多信息,请参阅以下公认答案:


顺便说一句,如果我只是复制粘贴您的数据帧到我的机器上,并将其
写入到_csv
中,它就会正常工作。

感谢您的尝试,TypeError:已经知道tz,请使用tz_convert进行转换。给了我这个错误