Python tz#u localize:KeyError:(';亚洲/新加坡';,u';发生在索引0';)

Python tz#u localize:KeyError:(';亚洲/新加坡';,u';发生在索引0';),python,pandas,dataframe,Python,Pandas,Dataframe,提及: 对此主题进行了搜索,但仍然找不到答案 我有一个数据帧,其格式如下: df timestamp 1 1549914000 2 1549913400 3 1549935000 3 1549936800 5 1549936200 我使用以下方法将历元转换为日期: df['date'] = pd.to_datetime(df['timestamp'], unit='s') 这一行将产生一个总是比我当地时间晚8小时的日期 因此,我按照链接中的示例使用apply+

提及:

对此主题进行了搜索,但仍然找不到答案

我有一个数据帧,其格式如下:

df timestamp
1  1549914000 
2  1549913400  
3  1549935000 
3  1549936800     
5  1549936200  
我使用以下方法将历元转换为日期:

df['date'] = pd.to_datetime(df['timestamp'], unit='s')
这一行将产生一个总是比我当地时间晚8小时的日期

因此,我按照链接中的示例使用apply+tz.localize to Asia/Singapore,在上述代码之后的下一行尝试了以下代码

df['date'] = df.apply(lambda x: x['date'].tz_localize(x['Asia/Singapore']), axis=1)
但是python返回一个错误,如下所示:

Traceback (most recent call last):
  File "/home/test/script.py", line 479, in <module>
    schedule.every(10).minutes.do(main).run()
  File "/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site-packages/schedule/__init__.py", line 411, in run
    ret = self.job_func()
  File "/home/test/script.py", line 361, in main
    df['date'] = df.apply(localize_ts, axis = 1)
  File "/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site-packages/pandas/core/frame.py", line 4877, in apply
    ignore_failures=ignore_failures)
  File "/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site-packages/pandas/core/frame.py", line 4973, in _apply_standard
    results[i] = func(v)
  File "/home/test/script.py", line 359, in localize_ts
    return pd.to_datetime(row['date']).tz_localize(row['Asia/Singapore'])
  File "/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site-packages/pandas/core/series.py", line 623, in __getitem__
    result = self.index.get_value(self, key)
  File "/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site-packages/pandas/core/indexes/base.py", line 2574, in get_value
    raise e1
KeyError: ('Asia/Singapore', u'occurred at index 0')
回溯(最近一次呼叫最后一次):
文件“/home/test/script.py”,第479行,在
schedule.every(10).minutes.do(main.run)()
文件“/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site packages/schedule/_init__.py”,第411行,运行中
ret=self.job_func()
文件“/home/test/script.py”,第361行,主
df['date']=df.apply(本地化,轴=1)
文件“/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site packages/pandas/core/frame.py”,第4877行,适用
忽略故障=忽略故障)
文件“/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site packages/pandas/core/frame.py”,第4973行,适用标准
结果[i]=func(v)
文件“/home/test/script.py”,第359行,本地化
返回pd.to_datetime(第['date'行]).tz_本地化(第['Asia/Singapore'行])
文件“/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site packages/pandas/core/series.py”,第623行,在__
结果=self.index.get_值(self,key)
文件“/opt/cloudera/parcels/Anaconda-4.0.0/lib/python2.7/site packages/pandas/core/index/base.py”,第2574行,在get_值中
提高e1
KeyError:('Asia/Singapore',u'出现在索引0'处)

我是否正确地替换了中的.tz_本地化(x['tz'])

如前所述,您的代码正在查找名为
Asia/Singapore
的列。请尝试以下方法:

df['date'] = df['date'].dt.tz_localize('Asia/Singapore')
你可以试试

import numpy as np
import pandas as pd
df = pd.DataFrame({'timestamp': [1549952400, 1549953600]},index=['1', '2'])
df['timestamp2'] =  df['timestamp'] + 28800
df['date'] = pd.to_datetime(df['timestamp2'], unit='s')
df = df.drop('timestamp2', 1)