如何导入超过24小时的Excel时间持续数据
如何从Excel导入数据?
Total time
6:27:53
68:22:26
171:58:44
当我把这些数据导入到Pandas时,结果是这样的。
0 06:27:53
1 1900-01-02 20:22:26
2 1900-01-07 03:58:44
我不知道怎么改变格式。
我尝试在导入数据时把格式改成字符串。
pd.read_excel('data.xlsx', dtype={'Total time':'str')
但结果还是一样,无法把格式改成datetime.timedelta。
1 个回答
1
如果你在Excel里有日期和时间的对象,最简单的方法可能是把它们当作字符串导入,然后在缺少的地方加上一个参考日期,接着用to_datetime
进行转换,最后再减去这个参考日期。
df = pd.read_excel('data.xlsx', dtype={'Total time': 'str'})
ref = '1900-01-01 '
df['timedelta'] = pd.to_datetime(df['Total time']
.where(df['Total time'].str.match('\d{4}-\d{2}-\d{2}'),
ref+df['Total time'])
).sub(pd.Timestamp(ref))
另外一个选择是保持原来的数据类型,然后使用Python和Pandas进行转换:
from datetime import datetime
def to_timedelta(x):
ref = datetime(1900, 1, 1)
if isinstance(x, datetime):
return x - ref
return str(x)
df = pd.read_excel('data.xlsx')
df['timedelta'] = pd.to_timedelta(df['Total time'].apply(to_timedelta))
输出结果:
Total time timedelta
0 06:27:53 0 days 06:27:53
1 1900-01-02 20:22:26 1 days 20:22:26
2 1900-01-07 03:58:44 6 days 03:58:44