通常,您可以使用tz_localize本地化整个列。如果指定单值时区,则希望将列本地化为格式化。如果有一列时区,你会怎么做?
start_datetime timezone
1 2016-08-25 10:30:00 US/Pacific
2 2006-08-26 14:00:00 US/Pacific
3 2016-08-27 10:15:00 US/Eastern
4 2016-08-28 10:30:00 US/Central
5 2016-08-09 17:45:00 US/Central
有没有办法在没有lambdas或申请的情况下这样做? (最佳选择)。
答案 0 :(得分:1)
我们可以按timezone
进行分组,并将.dt.tz_localize(group_timezone)
应用于每个群组:
In [393]: df['new'] = \
df.groupby('timezone')['start_datetime'] \
.transform(lambda x: x.dt.tz_localize(x.name))
In [394]: df
Out[394]:
start_datetime timezone new
0 2016-08-25 10:30:00 US/Pacific 2016-08-25 17:30:00
1 2006-08-26 14:00:00 US/Pacific 2006-08-26 21:00:00
2 2016-08-27 10:15:00 US/Eastern 2016-08-27 14:15:00
3 2016-08-28 10:30:00 US/Central 2016-08-28 15:30:00
4 2016-08-09 17:45:00 US/Central 2016-08-09 22:45:00