问题描述
我有一个非常大的CSV文件,包含100列。 为了说明我的问题,我将使用一个非常基本的例子。
我们假设我们有一个CSV文件。
in value df 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]
为了选择不同的列,如第2和第4列。 我该怎么办?
还有另一种方法可以通过重写CSV文件来解决此问题。 但它是巨大的文件; 所以我就是这样避免的。
1楼
这将选择第二列和第四列(因为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索引时,请使用df.iloc更明确地表明您的意图。 
     它也快一点,因为Pandas不必检查您的索引是否使用标签。 
 
     另一种可能是使用usecols参数: 
data = pandas.read_csv("ThisFile.csv", usecols=[1,3])
 
     这将仅将第二列和第四列加载到data DataFrame中。 
2楼
如果您更喜欢按名称选择列,则可以使用
data[['value','f']]
   value  f
0    975  5
1    976  4
2    977  1
3    978  0
4    979  0
3楼
正如Wai Yip Tung所说,您可以通过指定列的名称来过滤数据帧,例如:
import pandas as pd
data = pd.read_csv("ThisFile.csv")[['value','d']]
这解决了我的问题。