选择特定CSV列(过滤) - Python/pandas

17 投票
3 回答
59732 浏览
提问于 2025-04-17 22:14

我有一个非常大的CSV文件,里面有100列。为了说明我的问题,我会用一个非常简单的例子。

假设我们有一个CSV文件。

in  value   d     f
0    975   f01    5
1    976   F      4
2    977   d4     1
3    978   B6     0
4    979   2C     0

我想选择特定的列。

import pandas
data = pandas.read_csv("ThisFile.csv")

为了选择前两列,我用了

data.ix[:,:2]

如果我想选择其他列,比如第二列和第四列,我该怎么做呢?

还有一种解决这个问题的方法,就是重新写这个CSV文件。但这个文件太大了,所以我不想这样做。

3 个回答

1

正如 Wai Yip Tung 所说,你可以在读取数据时通过指定列的名称来过滤你的数据表,比如:

import pandas as pd
data = pd.read_csv("ThisFile.csv")[['value','d']]

这样就解决了我的问题。

10

如果你想通过名称来选择列,可以使用下面的代码:

data[['value','f']]

   value  f
0    975  5
1    976  4
2    977  1
3    978  0
4    979  0
23

这段话的意思是,下面的代码可以选择第二列和第四列的数据(因为在Python中,索引是从0开始的):

In [272]: df.iloc[:,(1,3)]
Out[272]: 
   value  f
0    975  5
1    976  4
2    977  1
3    978  0
4    979  0

[5 rows x 2 columns]

df.ix可以通过位置或标签来选择数据,而df.iloc总是通过位置来选择。当你想通过位置来选择数据时,使用df.iloc可以更明确地表达你的意图。这样做也会稍微快一点,因为Pandas不需要检查你的索引是否是用标签来表示的。


还有一种方法是使用usecols这个参数:

data = pandas.read_csv("ThisFile.csv", usecols=[1,3])

这样做会只把第二列和第四列的数据加载到data这个数据框中。

撰写回答