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

时间:2014-03-14 01:44:59

标签: python csv 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]

为了选择不同的列,如第2和第4列。我该怎么办?

还有另一种方法可以通过重写CSV文件来解决这个问题。但它的文件很大;所以我就是这样避免的。

3 个答案:

答案 0 :(得分:13)

这将选择第二列和第四列(因为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 DataFrame中。

答案 1 :(得分:6)

如果您更愿意按名称选择列,则可以使用

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

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

答案 2 :(得分:0)

正如 Wai Yip Tung 所说,您可以在读取时通过指定列名称来过滤数据框,例如:

UIView.animate(withDuration: 1.0, delay: 0.0, options: UIView.AnimationOptions.layoutSubviews, animations: {
    // animate here
})

这解决了我的问题。