【发布时间】:2017-07-10 15:25:55
【问题描述】:
我有一个包含几个 CSV 文档的 zip 文件。我已将 CSV 提取到一个名为“staging”的文件夹中。这些文档在 Windows CP1252 中编码。我想做的是将每个 CSV 文件作为单独的数据帧单独读取,然后在删除所有空值后用 utf8 编码覆盖旧文件。或者,我可以严格根据生成的 pandas 数据帧对数据库进行编码,而不是将 CSV 重写为 utf8。任何帮助将不胜感激 - 我浏览了 Stack Overflow 论坛,主要主题似乎是将多个 CSV 连接到一个数据帧中 - 我需要的是每个 CSV 的单独数据帧。此外,我必须删除 N/A 值,但是,在 CSV 中它们附有随机数(即 - N/A (3) 或 N/A(1) 等)
这是我正在使用的代码:
# Create the staging directory
staging_dir = "staging"
os.mkdir(staging_dir)
# Confirm the staging directory path
os.path.isdir(staging_dir)
# Machine independent path to create files
zip_file = os.path.join(staging_dir, "Hospital_Revised_Flatfiles.zip")
# Write the files to the computer
zf = open(zip_file,"wb")
zf.write(r.content)
zf.close()
# Program to unzip the files
import zipfile
z = zipfile.ZipFile(zip_file,"r")
z.extractall(staging_dir)
z.close()
#Create the dataframes
import io
import glob
import pandas as pd
files = glob.glob(os.path.join("staging" + "/*.csv"))
# OS independent reading of files
for file in files:
dfs = pd.read_csv(file, header = 0, encoding = 'cp1252')
【问题讨论】:
-
如果您打算将数据帧重新写入单独的文件,为什么首先要连接它们?
-
@COLDSPEED 确切地说,我根本不想连接它们,我想将它们分开,但我不知道如何将每个 CSV 文件导入单独的数据框,当我尝试时我得到意外的 EOF 语法错误。
-
语法错误?在哪条线上?
-
我遇到了语法错误,因为在最后一行,正如@P.Tillmann 指出的那样——我有一个额外的括号。我删除了括号,不再出现语法错误,但代码只生成一个数据帧。我需要为文件夹“staging”中的每个 csv 提供一个单独的数据框
标签: python pandas dataframe encoding