Pandas 读取csv移动列并跳过错误行

Pandas 读取csv移动列并跳过错误行,pandas,csv,Pandas,Csv,我正在使用Pandas读取\u csv将csv文件导入Jupyter笔记本 你可以找到那个。它在标题行之前有两个空行。 当我使用: df = pd.read_csv('data/2008-03-21_downloaded.csv', skiprows= 2) 生成的df将所有列标题都移到了上面 如果我添加索引\u col=False: df = pd.read_csv('data/2008-03-21_downloaded.csv', skiprows=[1,2], index_col=Fal

我正在使用Pandas
读取\u csv
将csv文件导入Jupyter笔记本

你可以找到那个。它在标题行之前有两个空行。 当我使用:

df = pd.read_csv('data/2008-03-21_downloaded.csv', skiprows= 2)
生成的df将所有列标题都移到了上面

如果我添加
索引\u col=False

df = pd.read_csv('data/2008-03-21_downloaded.csv', skiprows=[1,2], index_col=False)
结果使用一行数据作为标题,而不是实际的标题名称


我似乎不能跳过前两行,而将实际的标题用作标题[帐户、帐户名、金额等]

您的第一个版本的代码还可以。两个初始行为空,应为空 被跳过

但请注意,输入文件中的一个列名(请参见数据视图- 一段时间以来,您的帖子(包含它)包含%2C, 它是逗号的十六进制代码

很明显你的标题行被破坏了,这就是为什么你的标题行被破坏了 数据视图有一组列标题未命名

一个选项是使用此详细信息中的标题行进行订购(替换 然后重复读取

另一个选择是:

  • pass skiprows=3参数(同时跳过标题行)
  • 所有列传递具有正确列名的名称参数
第二个版本的代码是错误的,因为行计数从 。 不要被Excel中的行号误导,行号从one开始

修复您的
csv
文件:
  • 如前所述,标题有点混乱。以下代码将用
  • 只有当您有多个文件需要修复时,才需要执行此操作
  • 您可以根据需要添加其他修复程序
  • 是标准库的一部分
    • 如果
      p=WindowsPath('E:/PythonProjects/stack\u overflow/Articles.csv')
    • p.parents[0]=WindowsPath('E:/PythonProjects/stack\u overflow')
    • p.stem=文章
    • p.suffix=.csv
从pathlib导入路径
p=路径(“某些路径”)
files=p.rglob('*.csv')#top dir和所有子目录中的文件
对于文件中的文件:
file_updated=file.parents[0]/f'{file.stem}_updated{file.suffix}'
将file.open('r')作为f:
文件_已更新。打开('w')作为f2:
对于cnt,枚举(f)中的行:
如果第.split(',')行中的“帐户名”:
打印(cnt,行)
行=行。替换(“%2CTXT”、“、”)
行=行。替换(“%2C”,“,”)
打印(cnt,行)
f2.写入(行)
  • 当我下载并测试您的文件时,脚本没有读取标题前的其他行,我认为这与标题中帐户前的
    ï»
    有关
  • 我们将创建一个新文件,并将
    \u updated
    附加到
    stem
    ,而不是覆盖旧文件
将更新的文件读取到单个数据帧中:
p=Path('some_Path'))
files=p.rglob('*\u updated.csv')
df=pd.concat([pd.read\u csv(文件)用于文件中的文件])

这是标题行:
账户、账户名称、金额、验证码、AVS、品牌、卡尾、CVD、名字、姓氏、商户交易。ID、选项代码、日期、TXN ID、配置号、错误代码、身份验证类型、类型、TXT_城市%2CTXT_国家%2CTXT_电子邮件%2CTXT_电话%2CTXT_州%2CTXT_地址1%2CTXT_地址2%2CZIP%2CZIP、,,,,,,,,,如果您必须在包含数千个csv文件的文件夹中循环出现相同错误,该怎么办。每个CVS保存一天的数据,并且有数百个这样的文件。有没有办法循环浏览整个文件夹并进行更新?@SMJune-Yes。等一下。所有名称是否与所示相似?你是一个windows吗?是的,所有的文件都有相同的结构…当我尝试组合它们时,我能够使用以下代码:all_files=glob.glob(path+“/*.csv”),但上面的格式错误解决了它,并将其丢弃