如何处理字符串列在Python中仅包含小时,分钟和秒的日期

时间:2019-05-19 22:39:39

标签: python pandas datetime

在python的pandas中,我使用pd.to_datetime(data.observation_time, format="%H:%M:%S")来转换仅具有小时:分钟:秒的字符串列,然后结果始终包含诸如enter image description here这样的计算机所猜测的年:月:日

所以我的问题是如何只用小时:分钟:秒转换字符串列?该列不需要年,月和日

3 个答案:

答案 0 :(得分:1)

您可以使用

df['time'] = df['dates'].dt.time

它将创建一个新列,其中仅包含从datetime列中提取的时间

答案 1 :(得分:1)

您是如此亲密。实际上,to_datetime函数用于将string值转换为datetime对象。因此,您在to_datetime中提供的格式是字符串的当前格式,即python应该如何读取字符串。这样,python知道日期实际上是date而不是简单的string(doc)

此转换完成后,您可以使用strftime函数(doc)以自己的格式重新格式化日期

这里有个例子:

# Import module
import pandas as pd

# Build dataframe
df = pd.DataFrame({"Date": ["1900-01-01 01:01:00",
                            "1900-01-01 02:01:00",
                            "1900-01-01 03:31:00",
                            "1900-01-01 04:01:04",
                            "1900-01-01 11:01:00"]})
print(df)
#                   Date
# 0  1900-01-01 01:01:00
# 1  1900-01-01 02:01:00
# 2  1900-01-01 03:31:00
# 3  1900-01-01 04:01:04
# 4  1900-01-01 11:01:00

# Convert the date column (string type) to datetime type
df["Date"] = pd.to_datetime(df["Date"], format="%Y-%m-%d %H:%M:%S")
print(df)
#                    Date
# 0 1900-01-01 01:01:00
# 1 1900-01-01 02:01:00
# 2 1900-01-01 03:31:00
# 3 1900-01-01 04:01:04
# 4 1900-01-01 11:01:00

# Reformat the date column. Here Hours:minutes:seconds
df["Date"] = df.Date.dt.strftime("%H:%M:%S")
print(df)
#        Date
# 0  01:01:00
# 1  02:01:00
# 2  03:31:00
# 3  04:01:04
# 4  11:01:00

答案 2 :(得分:0)

使用python datetime对象的时间功能:

data['Time'] = [val.time() for val in data['observation_time']]