选择特定CSV列(过滤) - Python/pandas
我有一个非常大的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
这个数据框中。