从SQL Server导入的CSV文件在格式化datetim后丢失了数据

2024-04-23 23:30:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从SQLServer导出的大型CSV文件(1.1G),我想用python对其进行预处理,但在执行此操作时遇到了一些问题。原始的CSV文件datetime值看起来像这样00:07.5, 00:08.3, 00:48.7,因此我必须手动将它们转换为excel中的1/12/2015 12:00:07 am, 1/12/2015 12:00:08 am, 1/12/2015 12:00:49 am,方法是格式化整个列,使其成为d/m/yy h:mm:ss格式,以便可以识别。但是我注意到文件大小已经从1.1G缩小到了36.6 MB。我收到了excel通知:Possible Data Lost: Some features might be lost if you save this notebook in the comma-delimited(.csv) format. To preserve these features, save it in an Excel file format.

我试图以csv和xlsx格式保存文件,但这两种格式都会导致数据帧中的行丢失,因为我在python中读取文件并检查它们的shape:(26137666,4)(原始csv文件)vs(1048575,4)(xlsx文件)。你知道吗

我的原始excel文件datetime数据类似于this。你知道吗

我的问题是:

  1. 如何防止数据丢失?

  2. 是否可以在python中转换datetime列格式?


Tags: 文件csv数据informatdatetimesave格式
1条回答
网友
1楼 · 发布于 2024-04-23 23:30:58

来自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

稍后,您将得到一个非常重的文件中的所有数据,所以只需拆分它。你知道吗

相关问题 更多 >