从列而不是单个字符串获取tzinfo

时间:2017-11-05 23:07:54

标签: python pandas

通常,您可以使用tz_localize本地化整个列。如果指定单值时区,则希望将列本地化为格式化。如果有一列时区,你会怎么做?

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.tz_localize.html#pandas.Series.dt.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或申请的情况下这样做? (最佳选择)。

1 个答案:

答案 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