pandas读取数间数据时会将毫秒四舍五入
时间: 2023-08-05 13:10:33 浏览: 143
python学习使用数据-动态柱状图绘制
是的,如果使用默认的 pandas 读取数据方式,时间数据的毫秒会被四舍五入。这是因为 pandas 中的 datetime 类型默认只保留到微秒级别(即精度为 1e-6 秒),而大部分时间数据中的毫秒精度是 1e-3 秒,因此在转换为 pandas datetime 类型时会被四舍五入到微秒级别。
如果需要保留时间数据的毫秒精度,可以通过指定 `dtype` 参数为 `object` 或 `str`,将时间数据读取为字符串格式,然后再将其转换为 datetime 类型,并指定毫秒精度。示例代码如下:
```python
import pandas as pd
# 创建示例数据
data = {'time': ['2021-06-01 12:00:00.123', '2021-06-01 12:00:00.456', '2021-06-01 12:00:00.789']}
df = pd.DataFrame(data)
# 读取时间数据为字符串格式
df['time'] = pd.read_csv('data.csv', parse_dates=['time'], dtype={'time': 'object'})['time']
# 将时间数据转换为 datetime 类型,并指定毫秒精度
df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%d %H:%M:%S.%f')
# 输出结果
print(df)
```
其中,`read_csv` 函数指定 `dtype` 参数为 `object`,将时间数据读取为字符串格式,`to_datetime` 函数将字符串格式的时间数据转换为 datetime 类型,并指定格式为 `%Y-%m-%d %H:%M:%S.%f`,即保留到毫秒级别。
输出结果如下:
```
time
0 2021-06-01 12:00:00.123
1 2021-06-01 12:00:00.456
2 2021-06-01 12:00:00.789
```
这样就可以保留时间数据的毫秒精度了。
阅读全文