【问题标题】:How to read pandas CSV file with comma separator and comma thousand separator如何使用逗号分隔符和逗号千位分隔符读取 pandas CSV 文件
【发布时间】:2018-05-17 09:48:03
【问题描述】:

我有一个 csv 文件,其中的行如下所示: 87.89,"2,392.05",14.77,373.2(第三行有千位分隔符)

pandas 一直将第二列中的逗号视为行分隔符并显示“错误标记数据”错误。

pandas 中是否可以忽略双引号之间的逗号? 谢谢

示例行:

9999992613813558569,87.89,"2,392.05",14.77,373.2
9999987064038821584,95.11,"3,397.04",42.15,"1,461.14"
9999956300203713283,6.67,194.02,41.23,"1,105.45"
9999946809576027532,15.08,353.84,29.43,591.9

编辑:

我已经试过了:

read_csv(file, quotechar='"', encoding='latin1', thousands=',')
read_csv(file, quotechar='"', encoding='latin1', escapechar ='"')

【问题讨论】:

  • 好吧,当我对您的数据执行 read_csv() 时,它会忽略双引号之间的逗号。为什么它不适合您!
  • @AbdullahAhmedGhaznavi 你在用什么论据?
  • 没有任何争论我只是在做pd.read_csv('sample.csv')
  • @AbdullahAhmedGhaznavi 我在上面的行中进行了尝试,效果很好。但由于某种原因,pandas 无法处理整个文件。
  • 然后检查您的数据,似乎在某些行上您的列比其他行多!或者有可能在某些行上没有" " 标记正确检查您的数据!

标签: python pandas


【解决方案1】:

尝试阅读:

pd.read_csv(myfile, encoding='latin1', quotechar='"')

包含这些的每一列都将被视为类型object。 一旦你得到这个,回到浮动使用:

df = df.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='coerce'))

你也可以试试:

pd.read_csv(myfile, encoding='latin1', quotechar='"', error_bad_lines=False)

您可以在此处查看原始 csv 中遗漏的内容 - 导致问题的原因。

对于被省略的每一行,您将收到 Warning 而不是 Error

【讨论】:

  • 这个我试过了,还是不行,我也试过千百个=","
  • 你的熊猫版本是什么?
  • @MoayyadYaghi 你能用你尝试过的代码示例来编辑你的问题吗
  • @zipa pandas 版本:0.22.0 python 3.6
  • @MoayyadYaghi 你能分享一个数据示例吗,还有几行。
【解决方案2】:

这对我有用:

pd.read_csv(myfile, encoding='latin1', quotechar='"', thousands=',')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多