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

时间:2019-03-16 03:58:52

标签: python pandas

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

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

有没有办法我可以保留空白列并使D列下的9代替B

2 个答案:

答案 0 :(得分:1)

您可以使用:

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

使用正则表达式模式\ s {1,2}作为分隔符。此正则表达式匹配1或2空格字符。

  

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

     

{1,2}量词-匹配1到2次,最多匹配   可能,根据需要回馈

答案 1 :(得分:0)

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

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

不能保证此过程可以正常进行。您可能需要手动指定列的宽度。