【问题标题】:Convert time and date columns to timestamp将时间和日期列转换为时间戳
【发布时间】:2021-02-12 16:06:06
【问题描述】:

我有两列 - 日期和时间。

date                  | time    
2012-10-16 00:00:00   | 09:38:08-05:00  

我希望将这两者结合起来形成一个时间戳。我不知道如何解决这个问题。我应该去掉日期,添加时间,然后创建一个 DateTime,然后转换为时间戳。

【问题讨论】:

  • 这是在熊猫数据框中吗?这些列的数据类型是什么?
  • @MrFuppes 这是熊猫数据框,数据类型是对象。我已经从一个 excel 文件中读取了这些内容。
  • 好的,我已经添加了一个答案,其中涵盖了一些转换(日期时间 -> 字符串,请参阅代码中的 cmets),您可能不需要它们。

标签: python pandas dataframe datetime timestamp


【解决方案1】:

基本上,这是Combine Date and Time columns using python pandas 的变体,但您有一个UTC 偏移量,所以让我们也正确解析它。例如:

df = pd.DataFrame({'date': ['2012-10-16 00:00:00'],
                   'time': ['09:38:08-05:00']})

# make sure date column is date as string dtype
df['date'] = pd.to_datetime(df['date']).dt.date.astype(str)

# make sure time column is of string dtype
df['time'] = df['time'].astype(str)

# combine date and time column (now both string dtype), then parse to datetime
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])

# df['datetime']
# 0   2012-10-16 09:38:08-05:00
# Name: datetime, dtype: datetime64[ns, pytz.FixedOffset(-300)]

可选:指定时区。 UTC-5 是固定偏移量,有时不需要。如果您知道来源的 tz,您可以简单地添加该信息:

df['datetime'] = df['datetime'].dt.tz_convert('US/Central')

# df['datetime']
# 0   2012-10-16 09:38:08-05:00
# Name: datetime, dtype: datetime64[ns, US/Central]

可选:直接解析为 UTC。 在大多数情况下,最好使用 UTC。可以直接解析为UTC:

df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'], utc=True)

# df['datetime']
# 0   2012-10-16 14:38:08+00:00
# Name: datetime, dtype: datetime64[ns, UTC]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2016-10-05
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多