繁体   English   中英

熊猫没有适当的分隔符即可读取.csv文件。 (仅第一列与“其余”分开)

[英]pandas read .csv file without suitable delimiter. (only seperate first column vs “rest”)

我尝试将.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'来避免此警告。

所以我的问题是:有没有更好的方法来解决我的问题? 也许有一些选择让大熊猫在遇到第一个定界符后忽略其他定界符?

感谢您的任何建议!

基本上,您的.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构造函数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM