为什么 Pandas to_csv 方法有时会出现意外行为?

问题描述 投票:0回答:1

我正在使用 Pandas

to_csv
方法将我的 Dataframe 保存到 CSV 文件。数据帧的索引采用日期时间格式。索引中使用的格式为
%Y-%m-%d %H:%M:%S.%f
(
2024-07-08 10:53:07.20).

大多数时候,

to_csv
保存Dataframe时没有任何错误的索引值,但有时最后一个索引值以格式
%Y-%m-%d %H:%M:%S
而不是
%Y-%m-%d %H:%M:%S.%f
格式存储。它跳过毫秒部分。这种情况仅发生在最后一个索引上。

这背后的原因可能是什么,我可以做什么来阻止它发生?

我厌倦了查看 to_csv 方法的代码。不过我觉得是用C写的,不太懂。

python pandas dataframe
1个回答
0
投票

让我们假设这个例子:

df = pd.DataFrame({'col': range(4)},
                  index=pd.date_range('2024-01-01 01:23:45.678', periods=4))

CSV 输出:

,col
2024-01-01 01:23:45.678,0
2024-01-02 01:23:45.678,1
2024-01-03 01:23:45.678,2
2024-01-04 01:23:45.678,3

如果您的精度较低,则会自动删除毫秒:

df = pd.DataFrame({'col': range(4)}, index=pd.date_range('2024-01-01 01:23', periods=4))

CSV 输出将是:

,col
2024-01-01 01:23:00,0
2024-01-02 01:23:00,1
2024-01-03 01:23:00,2
2024-01-04 01:23:00,3

您可以使用

date_format='...'
强制使用日期格式:

df.to_csv('your_file.csv', date_format='%Y-%m-%d %H:%M:%S.%f')

输出:

,col
2024-01-01 01:23:00.000000,0
2024-01-02 01:23:00.000000,1
2024-01-03 01:23:00.000000,2
2024-01-04 01:23:00.000000,3
© www.soinside.com 2019 - 2024. All rights reserved.