pandas猜测分隔符用sep = None

时间:2015-06-10 12:00:26

标签: python csv pandas

Pandas documentation有这个:

  

使用sep = None,read_csv将尝试自动推断分隔符   在某些情况下,通过“嗅探”。

如何访问熊猫'猜测分隔符?

我想读取我的文件的10行,让pandas猜测分隔符,并启动我已经选择了分隔符的GUI。但我不知道如何获取大熊猫认为的分界符。

另外,有没有办法将pandas传递给字符串列表以限制它的猜测?

2 个答案:

答案 0 :(得分:11)

查看源代码,我怀疑是否可以从read_csv中获取分隔符。但pandas内部使用Sniffer模块中的csv类。这是一个可以让你前进的例子:

import csv
s = csv.Sniffer()
print s.sniff("a,b,c").delimiter
print s.sniff("a;b;c").delimiter
print s.sniff("a#b#c").delimiter

输出:

,
;
#

剩下的就是从文件中读取第一行并将其提供给Sniffer.sniff()函数,但我会将其留给您。

答案 1 :(得分:0)

csv.Sniffer是最简单的解决方案,但如果您需要使用压缩文件,则无法解决问题。 这是什么工作,虽然它使用私人会员,所以要小心:

reader = pd.read_csv('path/to/file.tar.gz', sep=None, engine='python', iterator=True)
sep = reader._engine.data.dialect.delimiter
reader.close()