我正在编写一个python代码,用于将目录中的所有文件更改为csv,然后使用具有NaN值的行填充缺少的时间戳并保存到新文件。代码正在运行,但由于某种原因它正在破坏我的原始文件。
尝试打开原始文件时出现Excel错误
“excel无法打开 文件,因为文件格式或扩展无效。验证 文件尚未损坏,扩展名与。的格式匹配 文件“
以下是我正在使用的代码
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')
答案 0 :(得分:5)
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可以读取数据,但是你丢失格式,其他表格,如果有的话......)。但是大熊猫很高兴地回读你的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文件。
除此之外:我不是大熊猫专家,但我确信这个临时文件可以以某种方式避免。