如何处理Python中只包含小时、分钟和秒的字符串列

如何处理Python中只包含小时、分钟和秒的字符串列,python,pandas,datetime,Python,Pandas,Datetime,在python的pandas中,我使用pd.to_datetime(data.observation_time,format=“%H:%M:%s”)转换只有小时:分钟:秒的字符串列,然后结果总是包含计算机猜测的年:月:日,如下所示 所以我这里的问题是如何转换只有小时:分钟:秒的字符串列?我不需要该列的年、月和日使用pythons datetime对象时间功能: data['Time'] = [val.time() for val in data['observation_time']] 你可以

在python的pandas中,我使用
pd.to_datetime(data.observation_time,format=“%H:%M:%s”)
转换只有小时:分钟:秒的字符串列,然后结果总是包含计算机猜测的年:月:日,如下所示


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

使用pythons datetime对象时间功能:

data['Time'] = [val.time() for val in data['observation_time']]
你可以用

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

它将创建一个新列,其中只有从datetime列中提取的时间

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

完成此转换后,您可以使用
strftime
功能以自己的格式重新格式化日期

这里有一个例子:

# 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

我还想查看
pd.to_timedelta