【问题标题】:Passing a paremeter taken from a dataframe column to a pandas method将从数据框列获取的参数传递给熊猫方法
【发布时间】:2021-01-28 05:02:11
【问题描述】:

假设我有一个包含两列的数据框,一个简单的日期,它是对应的时区。我想使用第二列将天真日期转换为时区感知日期。

naive_date timezone
24-01-2021 05:00:00 'Europe/London'
24-01-2021 06:00:00 'Europe/Amsterdam'
24-01-2021 00:00:00 'US/Eastern'

如果我只想转换为已知时区,我会这样做:

df['naive_date'].dt.tz_localize(tz='Europe/London')

但是如果传递给 tz 的值应该取自特定行的时区列怎么办?那可能吗?我试过了,不出所料没有用:

df['naive_date'].dt.tz_localize(tz=df['timezone'])

对于上下文,我会将日期与另一个时区感知日期列进行比较,当比较天真与时区感知日期时间时,比较返回 false。

【问题讨论】:

  • 我通常使用 df.apply(convert_my_tz, axis='columns') 来执行此操作,您愿意使用 apply,还是希望使用矢量化关联?
  • df.apply(lambda x: x['naive_date'].dt.tz_localize(tz=x['timezone']), axis = 1)? (我没有测试过)
  • 谢谢两位,我会考虑使用 apply,它看起来很有希望!

标签: python pandas


【解决方案1】:

Pablo 的回答很到位,这就是我最终使用的:

df['local_date'] = df.apply(lambda x: x['naive_date'].tz_localize(tz=x['timezone']), axis=1)

【讨论】:

    猜你喜欢
    • 2015-01-13
    • 2022-01-23
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2016-08-07
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多