Python中Timedelta转换为Int或Float

本文介绍使用Pandas和Numpy两种方法处理时间数据,Pandas直接提取days数值,Numpy则进行完整时间换算。可根据需求选择适合的时间转换方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Pandas处理

import pandas as pd
dataSet['t'] =dataSet['time'].astype('timedelta64[D]').astype(float)
dataSet['t'] .head()

 

二、Numpy处理

 

import numpy as np
dataSet['t']=(dataSet['time']/np.timedelta64(1, 'D')).astype(float)
dataSet['t'] .head()

三、区别

方法(一)pandas是直接提取days数值,如90 days 04:48:00提取数值90;

方法(二)numpy是把整个时间进行换算,如90 days 04:48:00转化为90.200000。

可以根据实际需求,选择不同的方法进行时间转换。

 

 

 

 

 

### 使用Python读取Matlab文件中的Datetime数据 为了处理来自Matlab的数据,特别是其中的时间戳`datetime`对象,可以利用SciPy库来加载`.mat`文件,并通过Pandas其他工具解析这些时间信息。下面展示了一个具体实例: #### 加载并转换Matlab的Datetime到Python 首先安装必要的包(如果尚未安装),可以通过pip完成此操作。 ```bash pip install scipy pandas numpy matplotlib ``` 接着编写一段脚本来演示如何从Matlab `.mat` 文件中提取 `datetime` 数据并将其转化为易于使用的Python格式。 ```python import scipy.io as sio import numpy as np from datetime import timedelta, datetime import pandas as pd def convert_matlab_datenum(dn): """Convert MATLAB datenum into Python datetime. Args: dn (float): A scalar representing a date in the MATLAB serial day number format. Returns: dt (datetime.datetime): Corresponding Python datetime object. Note that this conversion assumes all dates are after year 0 AD and before Oct 15, 1582, when the Gregorian calendar was introduced. For more accurate conversions involving these edge cases, additional logic would be required.[^1] """ ordinals = dn - 366 # Remove one day because MATLAB starts counting days from Jan 0, Year 0 instead of Jan 1, Year 1 try: start = datetime.fromordinal(int(ordinals)) fractional_day = float('%.9f' % (ordinals % 1)) * 24*60*60 # Convert fraction part to seconds delta_t = timedelta(seconds=fractional_day) result_dt = start + delta_t return result_dt except ValueError: raise Exception("Invalid input value for converting MATLAB datenums.") # Load .mat file containing datetime information file_path = 'example.mat' data_dict = sio.loadmat(file_path) # Assuming there's an array named 'dates' inside example.mat which contains MATLAB datenums if isinstance(data_dict['dates'], np.ndarray): converted_dates = [convert_matlab_datenum(date_item) for date_item in data_dict['dates'].flatten()] else: converted_dates = [] # Create DataFrame with processed datetime objects df = pd.DataFrame(converted_dates, columns=['Converted_Datetime']) print(df.head()) ``` 这段代码定义了一个辅助函数`convert_matlab_datenum()`用于将MATLAB特有的datenum数值转为标准的Python `datetime` 对象。之后展示了怎样运用Scipy IO模块加载包含有日期字段的`.mat`文件,并最终创建一个带有已转换日期的新DataFrame。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值