2015-12-03 16 views
1

我正在使用Python 2.7中的Unix时间戳/ pandas 0.17.1,并且需要生成一系列本地日期在美国东部时间)。在个别数据点上调用.date()时,时区感知标记似乎按预期工作(给出本地日期),但将它们作为系列工作时,似乎会恢复为UTC日期。有没有办法让基于系列的日期输出与单独在对象上调用.date()生成的本地日期相匹配? (谢谢!)tz-aware datetime series在熊猫系列中生成基于UTC的.date()输出应用(lambda)操作

def stamp_converter(ts): 
    ser = pd.to_datetime(ts, unit='s', utc=True) 
    ind = pd.DatetimeIndex(ser).tz_localize('UTC').tz_convert('US/Eastern') 
    return ind 

test_stamps = pd.Series([1396670200, 1405733045, 1448248441]) 
# e.g., 4/05 in GMT, 4/04 in Eastern 

local_dates = pd.Series(stamp_converter(test_stamp)) 

print local_dates 

# 0 2014-04-04 23:56:40-04:00 
# 1 2014-07-18 21:24:05-04:00 
# 2 2015-11-22 22:14:01-05:00 
# dtype: datetime64[ns, US/Eastern] 

print local_dates.apply(lambda x: x.date()) 

# 0 2014-04-05 
# 1 2014-07-19 
# 2 2015-11-23 
# dtype: object 

for i, x in local_dates.iteritems(): 
    print x.date() 

# 2014-04-04 
# 2014-07-18 
# 2015-11-22 

回答

0

糟糕。找到了。

print local_dates.dt.date 

# 0 2014-04-04 
# 1 2014-07-18 
# 2 2015-11-22 
# dtype: object 

但是:它的令人费解的是行为个体.date()操作和。适用之间是不同的(波长X:x.date())。如果有人能解释为什么会发生这种情况,我会感兴趣。