仅从不均匀的 pandas 列中的时间戳中删除日期并保留时间

Removing date and keeping time only from timestamp in a uneven pandas column

我有以下数据帧结构:

我想转换列“Entr”。和“Fim”到时间 (HH:MM),格式为:HH:MM:SS。我在转换时卡住了,因为列不均匀:有时会出现“-”,有时会出现日期时间格式“DD-MM-YYYY HH:MM:SS”,有时会出现时间“HH:MM:SS”。

列:


列示例:

https://drive.google.com/file/d/1ujvPED0S1vPZ9bmCSob3vR68XwUXC2gk/view?usp=sharing

导入日期工具 dateutil.parser.parse("1900-01-01 02:32:00")

阅读 Excel 文件会留下混合数据类型的列;一些元素是 datetime.datetime 对象(例如 datetime.datetime(1900, 1, 1, 0, 10) 在 df['Fim'].iloc[2]),一些 datetime.time (例如 datetime.time(13, 15) 在 df['Fim'].iloc[0]).据我所知,这与库 xlrd / openpyxl 如何读取文件有关 - pandas 对此无能为力。相关:.

TLDR:

将所有内容转换为字符串并删除日期。这让你有 HH:MM:SS 格式的时间。

df = pd.read_excel(filename)

df['Entr.'] = df['Entr.'].astype(str).str.split(' ').str[-1]
df['Fim'] = df['Fim'].astype(str).str.split(' ').str[-1]
df.head()

      Entr.       Fim
0  05:25:00  13:15:00
1  13:15:00  16:00:00
2  16:00:00  00:10:00
3  03:30:00  11:18:00
4  11:18:00  18:00:00