Python 使用Pandas读取空间分隔的数据
我过去常常使用Python 使用Pandas读取空间分隔的数据,python,pandas,Python,Pandas,我过去常常使用numpy.loadtxt()读取数据。然而,最近我在中发现,pandas.read\u csv()要快得多 要读取这些数据,我使用: pd.read_csv(filename, sep=' ',header=None) 我现在遇到的问题是,在我的例子中,分隔符可以不同于一个空格、x空格甚至是一个制表符 以下是我的数据的外观: 56.00 101.85 52.40 101.85 56.000000 101.850000 1 56.00 100.74 50.60 100.7
numpy.loadtxt()
读取数据。然而,最近我在中发现,pandas.read\u csv()
要快得多
要读取这些数据,我使用:
pd.read_csv(filename, sep=' ',header=None)
我现在遇到的问题是,在我的例子中,分隔符可以不同于一个空格、x空格甚至是一个制表符
以下是我的数据的外观:
56.00 101.85 52.40 101.85 56.000000 101.850000 1
56.00 100.74 50.60 100.74 56.000000 100.740000 2
56.00 100.74 52.10 100.74 56.000000 100.740000 3
56.00 102.96 52.40 102.96 56.000000 102.960000 4
56.00 100.74 55.40 100.74 56.000000 100.740000 5
这将导致如下结果:
0 1 2 3 4 5 6 7 8
0 56 NaN NaN 101.85 52.4 101.85 56 101.85 1
1 56 100.74 50.6 100.74 56.0 100.74 2 NaN NaN
2 56 100.74 52.1 100.74 56.0 100.74 3 NaN NaN
3 56 102.96 52.4 102.96 56.0 102.96 4 NaN NaN
4 56 100.74 55.4 100.74 56.0 100.74 5 NaN NaN
我必须指定我的数据大于100 MB。所以我不能先对数据进行预处理或清理。
有什么办法可以解决这个问题吗?您的原始线路:
pd.read_csv(filename, sep=' ',header=None)
将分隔符指定为单个空格,因为您的CSV可以有空格或制表符,您可以将正则表达式传递给sep
参数,如下所示:
pd.read_csv(filename, sep='\s+',header=None)
这将分隔符定义为一个或多个空白,有一个方便的备忘单列出