Py学习  »  Python

[pandas,python];在空格分隔的数据框中保留空列

Phoenix • 6 年前 • 1426 次点击  

我有一个数据框,其值如下

A B C D
1 2 3 4
5   6 7
8     9

当我用下面的文字把上面的框架读入熊猫时

pd.read_csv(io.StringIO(raw_2), sep='\s+')

它被解读为

A B C   D
1 2 3   4
5 6 7   NaN
8 9 NaN NaN

有没有一种方法可以保留空白柱,并有9个柱下D代替B

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39749
 
1426 次点击  
文章 [ 2 ]  |  最新文章 6 年前
Daniel Sobrado
Reply   •   1 楼
Daniel Sobrado    6 年前

您可以使用:

pd.read_csv(io.StringIO(raw_2), sep=r'\s{1,2}')

    A   B   C   D
0   1   2.0 3.0 4
1   5   NaN 6.0 7
2   8   NaN NaN 9

它使用regex模式{1,2}作为分隔符。此正则表达式匹配1或2个空白字符。

\ s{1,2}匹配任何空白字符(等于[\r\n\t\f\v])

{1,2}量词匹配的次数为 可能,根据需要回馈

DYZ
Reply   •   2 楼
DYZ    6 年前

您需要一个读取固定宽度列的读取器:

pd.read_fwf(io.StringIO(raw_2))
#   A    B    C  D
#0  1  2.0  3.0  4
#1  5  NaN  6.0  7
#2  8  NaN  NaN  9

一般来说,这一程序不能保证有效。您可能需要手动指定列宽。