首页 > 解决方案 > 仅从不均匀熊猫列中的时间戳中删除日期和保持时间

问题描述

我有以下数据框结构:

数据信息

我想转换列“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

标签: pythonpandasdatedatetimetime

解决方案


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

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

推荐阅读