当前位置: 首页 > 面试题库 >

对于不规则的分隔符,如何使熊猫read_csv中的分隔符更灵活wrt空格?

樊博雅
2023-03-14
问题内容

我需要通过使用read_csv方法从文件中读取数据来创建数据框。但是,分隔符不是很规则:一些列由制表符(\t)分隔,另一些则由空格分隔。此外,某些列可以用2或3个或更多的空格隔开,甚至可以用空格和制表符的组合(例如3个空格,两个制表符然后是1个空格)隔开。

有没有办法告诉熊猫正确对待这些文件?

顺便说一句,如果我使用Python,则不会出现此问题。我用:

for line in file(file_name):
   fld = line.split()

而且效果很好。不管字段之间是否有2或3个空格。即使空格和制表符的组合也不会引起任何问题。熊猫可以做同样的事情吗?


问题答案:

从文档中,您可以使用正则表达式或delim_whitespace

>>> import pandas as pd
>>> for line in open("whitespace.csv"):
...     print repr(line)
...     
'a\t  b\tc 1 2\n'
'd\t  e\tf 3 4\n'
>>> pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")
   0  1  2  3  4
0  a  b  c  1  2
1  d  e  f  3  4
>>> pd.read_csv("whitespace.csv", header=None, delim_whitespace=True)
   0  1  2  3  4
0  a  b  c  1  2
1  d  e  f  3  4


 类似资料:
  • 问题内容: 似乎pandas read_csv 函数仅允许使用单个字符定界符/分隔符。有没有办法允许使用字符串“ * | *”或“ %%”代替? 问题答案: 解决方案是使用read_table而不是read_csv: 因此,我们可以阅读以下内容:

  • 问题内容: 我经常看到人们在使用定界符。我试图找出什么是分隔符,以及它们的目的是什么。谷歌搜索20分钟后,我找不到能满足我要求的答案。所以,我现在的问题是:什么是分隔符,何时应使用它们? 问题答案: 在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止。这样,当代码

  • 问题内容: 我有一个文本文件,其中的列由可变数量的空格分隔。是否可以在不进行预处理的情况下直接将该文件作为pandas数据框加载?在pandas文档中,定界符部分说我可以使用一种构造,但是我无法使用它。 虽然我可以预处理文件以将空格更改为逗号/制表符,但直接加载它们会很好。 (仅供参考,这是hmmscan程序的* .hmmdomtblout输出) 问题答案: 我认为文档中仅缺少一个(也许是因为它在

  • 问题内容: 我尝试将文件读入熊猫。该文件具有以空格分隔的值,但是我尝试使用不同数量的空格: 但这不起作用 问题答案: 添加参数,它比正则表达式更快。

  • 问题内容: 有什么明显的方法可以在Wicket DropDownChoice的选项列表中添加分隔符?就我而言,我在数据源中填充了两种类型的域对象。我想我可以去手动将某种虚拟域对象添加到选择列表中,但是感觉很难看。 例: 当前代码(不带分隔符)如下所示: 问题答案: 请参阅http://www.wicket-library.com/wicket- examples-6.0.x/compref/wic

  • 我有一个输入字符串,其中包含由分隔符(| |)分隔的4个ID。我使用的代码如下: 但有些情况下并非所有ID都存在,如: 在上面的场景中,拆分不会分为4个部分,并且无法判断拆分数组中缺少哪个id。 有人可以帮助一个有效的解决方案。