将时间和日期列转换为时间戳

时间:2020-10-30 07:31:02

标签: python pandas dataframe datetime timestamp

我有两列-日期和时间。

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

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

1 个答案:

答案 0 :(得分: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]