Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:解析末尾缺少选项卡的表_Python_Python 3.x_Pandas_Python 2.7 - Fatal编程技术网

Python:解析末尾缺少选项卡的表

Python:解析末尾缺少选项卡的表,python,python-3.x,pandas,python-2.7,Python,Python 3.x,Pandas,Python 2.7,是否有一种方法可以使用pandas read table或read fwf来解析具有空字段的文本文件,如果行中没有更多字段,则制表符将停止。示例:我添加了空格以便于阅读,但它们不在选项卡之间。应该有5列A:E A \t B \t C \t D \t E \r\n word 1 \t 1 \t 2 \t text \t s \r\n \t 0 \t 20 \r\n word 2 \t 1 \t 5

是否有一种方法可以使用pandas read table或read fwf来解析具有空字段的文本文件,如果行中没有更多字段,则制表符将停止。示例:我添加了空格以便于阅读,但它们不在选项卡之间。应该有5列A:E

A \t B \t C \t D \t E            \r\n
word 1 \t 1 \t 2  \t text  \t s  \r\n
       \t 0 \t 20                \r\n
word 2 \t 1 \t 5                 \r\n
       \t   \t    \t text2       \r\n
word 6 \t 2 \t 6  \t text3 \t s  \r\n
我想要NaN值或任何表示有空字段的地方为空的内容。我到处找过类似的东西,但什么也没找到。我也尝试了所有我能想到的使用熊猫的方法。我曾考虑过向缺少4的每一行添加\t值,但我希望有一种更简单的方法,因为除了这一点之外,此数据集还有更多问题。这些数据表之间用文本分隔,因为它是转换为文本的pdf

预期结果:

   A      B    C     D      E
word 1    1    2    text    s
  NaN     0    20   NaN    NaN
word 2    1    5    NaN    NaN
  NaN    NaN  NaN  text2   NaN
word 6    2    6   text3    s
使用

data = pd.read_fwf(filename, skiprows=range(0,10),skipfooter=8,sep='\t',na_values='NaN')

嗯,从示例中过滤掉空格后,它得到:

'A\tB\tC\tD\tE\r\nword 1\t1\t2\ttext\ts\r\n\t0\t20\r\nword 2\t1\t5\r\n\t\t\ttext2\r\nword 6\t2\t6\ttext3\ts\r\n'
显示为(每8个位置的选项卡转换为空格):

Pandas 0.23.4使用(
na_值=“”
要求将空字段转换为
NaN
):

如预期所示:

        A    B     C      D    E
0  word 1  1.0   2.0   text    s
1     NaN  0.0  20.0    NaN  NaN
2  word 2  1.0   5.0    NaN  NaN
3     NaN  NaN   NaN  text2  NaN
4  word 6  2.0   6.0  text3    s

你试过什么?你能添加一个预期的结果吗?我试着使用read_table和read_fwf,在网上查看了很多不同的参数。似乎什么都不管用。所有内容都作为字符串放在第一列中。它不解析选项卡。我认为这是因为他们的选项卡数量不一致,所以添加delim_whitespace=True会将选项卡保留在第一列中,但不会将它们分开。
data = pandas.read_csv(file, sep='\t', na_values='')
print(data)
        A    B     C      D    E
0  word 1  1.0   2.0   text    s
1     NaN  0.0  20.0    NaN  NaN
2  word 2  1.0   5.0    NaN  NaN
3     NaN  NaN   NaN  text2  NaN
4  word 6  2.0   6.0  text3    s