用Pandas读取空间分隔的数据

2024-04-20 16:04:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前用numpy.loadtxt()读取数据。然而,最近我在SO中发现,pandas.read_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。所以我不能先对数据进行预处理或清理。 有什么办法把这个修好吗?


Tags: csv数据numpynonepandasreadsonan
1条回答
网友
1楼 · 发布于 2024-04-20 16:04:12

你的原话:

pd.read_csv(filename, sep=' ',header=None)

将分隔符指定为单个空格,因为csv可以有空格或制表符,可以将正则表达式传递给sep参数,如下所示:

pd.read_csv(filename, sep='\s+',header=None)

这将分隔符定义为一个或多个空白,有一个方便的备忘单列出regular expressions.

相关问题 更多 >