我有一个数据框,其值如下所示
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
答案 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
不能保证此过程可以正常进行。您可能需要手动指定列的宽度。