【问题标题】:pandas does not read a excel file fine after I've save a Datetime cell保存日期时间单元格后,熊猫无法正常读取 excel 文件
【发布时间】:2018-03-13 23:21:04
【问题描述】:

我正在使用 pandas read_excel 读取文件

df0 = pd.read_excel(cfname,'Calendari', index_col=0, parse_cols='A:R',
            converters={'Categoria':str,'Fase':str, 'Grupo':str, 'Jornada':str,  
                               'Partido':str, 'IdPartido':str,'Leido':str})
df0.head()

输出是:

Linea Categoria Fase Grupo Jornada Partido IdPartido Leido Data                 Hora   
    2       CCM    1     1       1      -1       NaN    No Jornada 1            NaN  
    3       CCM    1     1       1       0       NaN    No Data                 Hora    
    4       CCM    1     1       1       1 CCM110101    No 2017-09-30 00:00:00  19:30:00  
    5       CCM    1     1       1       2 CCM110102    No 2017-09-30 00:00:00  17:45:00  
    6       CCM    1     1       1       3 CCM110103    No 2017-09-27 00:00:00  18:00:00

我用 openpyxl 写一个新日期:在第 6 行我写 2017-10-01

from openpyxl import load_workbook
wb = load_workbook(filename = cfname, keep_vba=True)
ws = wb.get_sheet_by_name('Calendari')
cell = ws['I6']
cell.value = datetime.strptime('01/10/2017', "%d/%m/%Y")
cell.number_format = 'dd/mm/yyyy'
wb.save(filename = cfname)

在 Excel 中,日期似乎保存得很好,使用日期格式。但是当我尝试使用 pandas read_excel 再次读取文件时,数据已更改
Jornada Partido IdPartido 的值变为 NaN

Linea Categoria Fase Grupo Jornada Partido IdPartido Leido Data                 Hora   
    2       CCM    1     1     NaN     NaN       NaN    No Jornada 1            NaN  
    3       CCM    1     1     NaN     NaN       NaN    No Data                 Hora    
    4       CCM    1     1     NaN     NaN       NaN    No 2017-09-30 00:00:00  19:30:00  
    5       CCM    1     1     NaN     NaN       NaN    No 2017-09-30 00:00:00  17:45:00  
    6       CCM    1     1     NaN     NaN       NaN    No 2017-10-01 00:00:00  18:00:00

我不知道为什么。我尝试使用转换器,没有它们,不同的日期格式,...
请问,谁能帮帮我?

【问题讨论】:

  • 您的帖子中有语法错误 ws = wb.get_sheet_by_name('Calendari')cell = ws['I6']
  • 两个输出看起来相同。哪一列导致问题?

标签: python excel pandas datetime openpyxl


【解决方案1】:

我正在做测试。最终我发现,如果我用 python(使用 Excel 程序)打开并保存 excel 文件,当我尝试用 pandas 再次读取文件时已经不会给我错误了。

我什么都不懂。用

关闭的东西不好
wb.save(filename = cfname)

是不是因为我的Excel文件是宏xlxm?我打开它:

wb = load_workbook(filename = cfname, keep_vba=True)

【讨论】:

    【解决方案2】:

    如果您已经使用 openpyxl 打开了一个文件,那么您可以使用内置实用程序将其转换为 Pandas。 http://openpyxl.readthedocs.io/en/default/pandas.html

    由于这些值已经转换为 Python 对象,Pandas 的转换既快速又可靠。

    【讨论】:

    • 我用 Pandas 读取了文件,它可以工作。我有一个 for 循环来遍历一些行。需要时,我会更改 Partido(比赛)的日期。但是下次我用 Pandas 打开文件时,它会丢失 Jornada、Partido 和 IdPartido 列的信息。他们变成了 NaN
    • 那么不要用 Pandas 读取文件。使用 openpyxl 读取和写入文件,使用 Pandas 进行任何分析或更改。
    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 2023-04-04
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多