首页 > 解决方案 > 在 Pandas 中读取带逗号的 CSV 文件时出现问题

问题描述

在 Pandas 中读取带有逗号和字符的 CSV 文件时出现问题的扩展

当且仅当包含逗号作为其字符的一列和其余列的行为良好时,上述链接中提供的解决方案才有效。

如果有不止一列存在上述问题怎么办?

带有附加逗号问题的示例 CSV 内容:

Name,Age,Address,Phone,Qualification
Suresh,28,Texas,3334567892,B.Tech
Ramesh,24,NewYork, NY,8978974040,9991111234,Ph.D
Mukesh,26,Dallas,4547892345,Ph.D

所需的输出 Pandas DataFrame:

Name    Age  Address      Phone                  Qualification
Suresh  28   Texas        3334567892             B.Tech
Ramesh  24   NewYork, NY  8978974040,9991111234  Ph.D
Mukesh  26   Dallas       4547892345             Ph.D

编辑:

以逗号作为连续列中的字符的输入文件:

Name,Age,Address,Qualification,Grade                  
Suresh,28,Texas,B.Tech,Ph.D,A
Ramesh,24,NewYork, NY,B.Tech,A+
Mukesh,26,Dallas,B.Tech,Ph.D,A

所需的输出 Pandas DataFrame:

Name    Age  Address      Qualification Grade                  
Suresh  28   Texas        B.Tech,Ph.D   A
Ramesh  24   NewYork, NY  B.Tech        A+
Mukesh  26   Dallas       B.Tech,Ph.D   A

我能得到解决这个问题的任何建议吗?

提前致谢!!!

标签: pythonpandasdataframe

解决方案


一种方法是必须"清楚地分离您的数据 -

Name,Age,Address,Phone,Qualification
Suresh,28,Texas,3334567892,B.Tech
Ramesh,24,"NewYork, NY","8978974040,9991111234",Ph.D
Mukesh,26,Dallas,4547892345,Ph.D

如果这不存在,pandas将很难正确阅读。

复制上面的数据,做一个pd.read_clipboard(sep=','),它会产生 -

     Name  Age      Address                  Phone Qualification
0  Suresh   28        Texas             3334567892        B.Tech
1  Ramesh   24  NewYork, NY  8978974040,9991111234          Ph.D
2  Mukesh   26       Dallas             4547892345          Ph.D

如果修改源数据作为一个整体不在您的能力范围内 -

一种实用的方法是通常read_csv使用error_bad_lines=False. 完成后,查看日志并记下pandas正在努力阅读的行,并相应地仅修改这些行。

希望这可以帮助。


推荐阅读