制表分隔文件到熊猫
Posted
技术标签:
【中文标题】制表分隔文件到熊猫【英文标题】:tabulation separated file into pandas 【发布时间】:2017-10-29 18:09:26 【问题描述】:下午好,
在我的问题Reading csv like file to pandas 之后,我还有一个更棘手的问题。
我试图阅读的 excel 电子表格由制表符分隔,并有一列带引号。我正在尝试使用 quotechar 参数来避免意外的列,但它似乎不起作用,因为分隔符是正则表达式
我的代码如下,如果有帮助的话:
umm2017=pd.read_csv(r'0\DonneesIndisponibilitesProduction_2017.xls'.format(path_temp),sep = r"\t",encoding='iso-8859-2', quotechar = "'") umm2017 = umm2017.drop(umm2017.index[len(umm2017) - 1]) umm2017.to_csv(r'\umm_rte_2017.csv'.format(path_output), index = 'False')
我想用 pandas 阅读的 excel 在这里
example
我要解析的文件可以在这里找到,在底部https://clients.rte-france.com/lang/fr/visiteurs/vie/prod/indisponibilites.jsp
编辑:花了一个下午试图理解;所以C引擎似乎不支持quotchar,这是我唯一可以使用的,因为我的文件使用正则表达式作为sep。我试图从原始文件中删除所有连字符,但它不起作用。
这是我得到的输出 csv;有一些额外的行把事情搞砸了:
非常感谢
【问题讨论】:
它在 python 控制台中的外观如何?如果它在那里看起来没问题,那么问题可能在于编写它。如果将sep=r'\t'
添加到to_csv
会发生什么?
我在控制台中确实有同样的问题,数据框中有奇怪的行,甚至将分隔符添加到“to_csv”函数也不起作用。我想知道它是否来自原始文件本身,当我用记事本++打开它时,我已经看到了额外的行。感觉这个问题没有办法解决!
意识到我从您的链接中选择了一个碰巧没有出现问题的文件。切换到另一个并能够重现它。
【参考方案1】:
作为一种解决方法,为避免pd.read_csv
将长度超过一个字符的分隔符解释为正则表达式并导致引用问题,您可以先将\t
替换为另一个字符,然后将其提供给pd.read_csv
。
例如,对于您链接中的 2014 年文件,;
似乎可以工作:
import io
import pandas as pd
with open(fileloc, encoding='iso-8859-2') as file:
data = file.read().replace('\t', ';')
pd.read_csv(io.StringIO(data), sep=';').to_csv(newfileloc, encoding='iso-8859-2', index=False)
【讨论】:
以上是关于制表分隔文件到熊猫的主要内容,如果未能解决你的问题,请参考以下文章