python - 从 SQL Server 导入的 CSV 文件在格式化日期时间后丢失数据
问题描述
我有一个从 SQL Server 导出的大型 CSV 文件(1.1G),我想在 python 中对其进行预处理,但是这样做有一些问题。原始 CSV 文件的日期时间值如下所示00:07.5, 00:08.3, 00:48.7
,因此我必须1/12/2015 12:00:07 am, 1/12/2015 12:00:08 am, 1/12/2015 12:00:49 am
通过格式化整个列来手动将它们转换为 excel 格式以使其d/m/yy h:mm:ss
格式可识别。但我注意到文件大小已经缩小到36.6 MB
从1.1G
. 我收到了 excel 通知:可能的数据丢失:如果将此笔记本保存为逗号分隔 (.csv) 格式,则某些功能可能会丢失。要保留这些功能,请将其保存为 Excel 文件格式。
我尝试将文件保存为 csv 和 xlsx 格式,但是当我在 python 中读取文件并检查它们时,两者都导致数据框中的行丢失shape
:(26137666, 4)(original csv file) vs (1048575, 4) (xlsx 文件)。
我的原始 excel 文件日期时间数据看起来与此类似。
我的问题是:
如何防止数据丢失?
是否可以在python中转换日期时间列格式?
解决方案
来自 Excel,而不是 python。
我发现这个主题正在研究。有一种方法可以将所有这些数据复制到 Excel 数据表中。(我之前有一个 5000 万行 CSV 文件的问题)如果有任何格式,可以包含额外的代码。尝试这个。
Sub ReadCSVFiles()
Dim i, j As Double
Dim UserFileName As String
Dim strTextLine As String
Dim iFile As Integer: iFile = FreeFile
UserFileName = Application.GetOpenFilename
Open UserFileName For Input As #iFile
i = 1
j = 1
Check = False
Do Until EOF(1)
Line Input #1, strTextLine
If i >= 1048576 Then
i = 1
j = j + 1
Else
Sheets(1).Cells(i, j) = strTextLine
i = i + 1
End If
Loop
Close #iFile
End Sub
稍后您将在一个非常重的文件中获取所有数据,因此只需将其拆分即可。
推荐阅读
- java - 从 EditText 元素将文本设置为 TextView 显示空白
- git - 如何绕过.gitignore?
- ios - 如何避免列出 iCloud 存储中 Document 目录中的某些文件?
- ms-access - 如何在计算字段中返回零
- r - 通过涉及条件的 mutate 添加新列
- sql - 检查BIMC表中是否存在列,SAP HANA
- twilio - 使用 Laravel 的任务路由器问题。任务未创建?
- php - 为什么 blockquote 标签在 PHP 循环中不起作用?
- javascript - 比较相同 Async/Await 函数的两种构造
- twilio-api - 通过 JWT 使用 QR 字符串生成的 QR 码无效