【问题标题】:Converting all the datetime columns of a variable Pandas DataFrame into a different timezone将变量 Pandas DataFrame 的所有日期时间列转换为不同的时区
【发布时间】:2020-06-03 18:40:06
【问题描述】:

我必须处理一个可以由不同日期时间列组成的 Pandas DataFrame(它们可以变化,我可以有 0..N 个日期时间列)。我知道每个 datetime 列时区都是 UTC,我需要将它们的数据转换为另一个时区。如果我这样做:

df['a_datetime_column'].dt.tz_localize('UTC').dt.tz_convert('my_timezone') 

它有效,但我需要提前知道日期时间列名称(好的,我可以通过某种方式获得它们)。

有没有一种特定的方法可以一次对所有 DataFrame 进行这种转换,而独立于其列的组成?

【问题讨论】:

  • 打印df.dtypes时有什么?你能从那里过滤那些datetime类型的吗?
  • 对于日期时间列我有datetime64[ns]
  • 那么您可以简单地遍历类型为 datetime64[ns] 的列

标签: python pandas timezone


【解决方案1】:

您可以遍历日期时间类型的列:

for col,dtyp in df.dtypes.iteritems():
    if dtyp == 'datetime64[ns]':
        df[col] = df[col].dt.tz_localize('UTC').dt.tz_convert('my_timezone') 

【讨论】:

    【解决方案2】:

    查看select_dtypes,您可以使用它仅选择datetime64[ns] 列并将您的tz_convert 应用于这些:

    df.select_dtypes(inlcude=["datetime64[ns]"]).dt.tz_localize('UTC').dt.tz_convert('my_timezone') 
    

    【讨论】:

    • 这是否需要 tz 感知起始数据?
    • 什么意思?如果它们是datetime64[ns] 类型,我认为它们没有某种时区?
    • 对于选择部分,没有。
    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 2022-01-17
    • 2015-11-27
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多