pandas读取没有合适分隔符的.csv文件。 (只有单独的第一列vs#34;休息")

时间:2018-04-27 18:43:42

标签: python pandas csv delimiter

我尝试将.csv文件导入到python pandas中,如下所示:

dataframe = pd.read_csv(inputfile, sep=delimiter, header=None)

但是,(巨大的)inputfile的每一行都包含一个整数,后跟一些字符串。像这样:

1234 this string % might; contain 눈 anything

结果应为两列dataframe,其中第1位表示Integer,第2位表示其余部分。

由于字符串中可能出现任何字符,因此我无法将单个字符用作分隔符。试图使用一个非常不可能的长字符串序列,如" khlKiwVlZdsb9oVKq5yG"作为一个人的分隔符感觉就像一个肮脏的解决方法,其次可能不是100%可靠,第三个导致以下"错误/不便":

  

ParserWarning:回归' python'引擎,因为' c'引擎不支持正则表达式分隔符(分隔符> 1个字符,不同于' \ s +'被解释为正则表达式);您可以通过指定engine =' python'。

来避免此警告

所以我的问题是:有没有更好的方法来处理我的问题?也许有一些选项告诉熊猫在遇到第一行之后忽略任何进一步的分隔符?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:3)

基本上,你的.csv不是csv ;-)

我建议您手动打开并读取该文件,使用第一个空格拆分每一行,然后根据需要将结果转换为DataFrame。

fp = ...  # your file pointer
data = [line.split(' ', maxsplit=1) for line in fp]

如果文件中包含大量数据,请考虑使用生成器表达式。

在这两种情况下,您都可以将data转换为DataFrame

pandas.DataFrame.from_records(data, columns=['Integer', 'String'])

(..或直接使用DataFrame构造函数)