Python:解析末尾缺少tab的表

2024-06-11 09:37:41 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以使用read table或read fwf来解析具有空字段的文本文件,如果行中没有其他字段,则tabbed分隔符将停止。示例:为了便于阅读,我添加了空格,但它们在选项卡之间不存在。应该有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')

Tags: 方法text文本示例readtablenantabbed
1条回答
网友
1楼 · 发布于 2024-06-11 09:37:41

嗯,从你的例子中过滤出空格后,它得到:

'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个位置的制表符转换为空格):

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

Pandas 0.23.4使用(na_values=''请求将空字段转换为NaN)平滑地读取它:

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

相关问题 更多 >