【问题标题】:Read csv files with quotes with pandas用 pandas 读取带有引号的 csv 文件
【发布时间】:2018-07-29 20:18:37
【问题描述】:

我无法正确读取带有 pandas 的 csv 文件。我已经搜索了我的问题的解决方案,但没有找到。

所以,我的文件包含有关曲目的信息,但它的结构有点特殊。这是标题结构,大多数行都尊重它。

artist, trackname, albumname, tracknum, year, mp3genre
Anton Cosmo, Cry, The In Between, 12, 2010, Electro Rock

但有些行的结构与此不同:

artist, trackname, albumname, tracknum, year, mp3genre
Anne Garner, "Home, Outbound","Long Journey Here, 1, 2011, Electronica  

我尝试了很多方法来将这个 csv 文件读入 pandas DataFrame,但我没有成功。我以为:

df = pd.read_csv("songs.csv", quotechar="\"")

会起作用,但它给了我这样一条线:

artist                                Anne Garner
trackname    "Home, Outbound" , Long Journey Here
albumname                                       1
tracknum                                     2011
year                                  Electronica
mp3genre                                      NaN

而不是:

artist                                Anne Garner
trackname                          Home, Outbound
albumname                       Long Journey Here                   
tracknum                                        1
year                                         2011
mp3genre                              Electronica

你知道正确阅读的方法吗?

提前致谢

【问题讨论】:

  • 真的是这样的结构吗?你有一个永远不会结束的报价。在“这里的长途旅行......
  • 确实我弄错了,真正的结构是“Anne Garner”、“Home, Outbound””、“Long Journey Here”、“1”、“2011”、“Electronica”跨度>
  • 所以你有""Home, Outbound""'unquoted'?字符串开头和结尾的两个引号?
  • 您可以尝试将每次出现的"" 替换为"
  • @joaoavf 提到的方法值得一试,但不能保证它会起作用,除非您知道"" 不会出现在任何字段中。如果您控制您尝试解析的文件的生成,则可以避免首先写双引号。

标签: python python-3.x pandas csv


【解决方案1】:

如前所述,您可以在阅读时尝试将"" 替换为"。一种方法是使用csv.reader() 在将数据传递给 Pandas 之前对其进行预解析。例如:

import pandas as pd
import csv
import io

with open('songs.csv') as f_input:
    data = [next(csv.reader(io.StringIO(line.replace('""', '"')))) for line in f_input]

print(pd.DataFrame(data[1:], columns=data[0]))

这会给你:

        artist       trackname          albumname tracknum   year      mp3genre
0  Anton Cosmo             Cry     The In Between       12   2010  Electro Rock
1  Anne Garner  Home, Outbound  Long Journey Here        1   2011   Electronica

【讨论】:

    猜你喜欢
    • 2020-09-07
    • 2021-09-30
    • 2019-10-31
    • 2021-04-12
    • 1970-01-01
    • 2023-02-01
    • 2019-12-21
    • 2022-01-16
    • 2019-03-28
    相关资源
    最近更新 更多