gpt4 book ai didi

将目录中的所有 xlsx 文件更改为 CSV 损坏原始文件的 Python 代码

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:33 28 4
gpt4 key购买 nike

我正在编写一个 python 代码,将目录中的所有文件更改为 csv,然后用带有 NaN 值的行填充缺失的时间戳,并保存到一个新文件中。该代码正在运行,但是由于某种原因它正在破坏我的原始文件。

尝试打开原始文件时出现 Excel 错误

"excel cannot open the file because file format or extention is not valid. Verify that the file has not been corrupted and the extension matches the format of the file"

这是我使用的代码

import os, re
import pandas as pd
import numpy as np

inputdirectory = input('Enter the directory: ')
directory = os.listdir(inputdirectory)
os.chdir(inputdirectory)

for file in directory:
data_xls = pd.read_excel(file, 'Sheet2', index_col=None)
data_xls.to_csv(file, encoding='utf-8', index=False)
df = pd.read_csv(file, index_col="DateTime", parse_dates=True)
df = df.resample('1min').mean()
df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1min"))
df.to_csv(os.path.basename(file) + "-processed.csv", index=True, index_label="DateTime", na_rep='NaN')

最佳答案

data_xls = pd.read_excel(file, 'Sheet2', index_col=None)
data_xls.to_csv(file, encoding='utf-8', index=False)

意味着您正在使用 xlsx 文件名转储 csv 数据。

Excel 无法识别它是 csv,因为扩展名是 xlsx 并且文件显示为已损坏(这样做时您实际上会丢失数据:重命名回 .csv 允许读取数据,但您会丢失格式,其他工作表如果任何...)。但是 pandas 很乐意读回你的 csv 数据,即使它被称为 .xlsx,所以你认为你的代码工作正常。

解决方案:为该临时文件使用另一个名称。

我谦虚的非专家修复:

import glob,os

inputdirectory = input('Enter the directory: ')

for xls_file in glob.glob(os.path.join(inputdirectory,"*.xls*")):
data_xls = pd.read_excel(xls_file, 'Sheet2', index_col=None)
csv_file = os.path.splitext(xls_file)[0]+".csv"
data_xls.to_csv(csv_file, encoding='utf-8', index=False)

作为奖励,该脚本不使用 os.chdir 并且仅处理 xls 文件。它对 .csv 临时文件使用相同的基数名称,但不会覆盖 .xls 文件。

旁白:我不是 pandas 专家,但我确信可以通过某种方式避免这个临时文件。

关于将目录中的所有 xlsx 文件更改为 CSV 损坏原始文件的 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42727369/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com