我有一个数据框,其值如下
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
您可以使用:
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}量词匹配的次数为 可能,根据需要回馈
\ s{1,2}匹配任何空白字符(等于[\r\n\t\f\v])
{1,2}量词匹配的次数为 可能,根据需要回馈
您需要一个读取固定宽度列的读取器:
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
一般来说,这一程序不能保证有效。您可能需要手动指定列宽。