如何使用pandas读取特定的csv文件列?

时间:2018-02-21 05:59:43

标签: python pandas csv dataframe

我需要在使用pandas加载csv时删除带有标签名称。我正在按如下方式阅读csv,并希望在其中添加参数来执行此操作。感谢。

pd.read_csv("sample.csv")

我在读完csv后知道这件事:

df.drop('name', axis=1)

4 个答案:

答案 0 :(得分:17)

如果您之前知道列名称,则可以通过设置usecols参数

来完成

当您知道要使用哪些列

假设您的csv文件包含['id','name','last_name']列,而您只需要['name','last_name']。你可以这样做:

import pandas as pd
df = pd.read_csv("sample.csv", usecols = ['name','last_name'])

当您需要前N列

如果您不知道列名,但想从数据帧中获得前N列。你可以通过

来做到这一点
import pandas as pd
df = pd.read_csv("sample.csv", usecols = [i for i in range(n)])

修改

当您知道要删除的列的名称时

# Read column names from file
cols = list(pd.read_csv("sample_data.csv", nrows =1))
print(cols)

# Use list comprehension to remove the unwanted column in **usecol**
df= pd.read_csv("sample_data.csv", usecols =[i for i in cols if i != 'name'])

答案 1 :(得分:3)

使用df= df.drop(['ID','prediction'],axis=1)为我完成了工作。我删除了“ ID”和“预测”列。确保将它们放在['column1','column2']之类的方括号中。 还需要其他复杂的解决方案。

答案 2 :(得分:3)

可以在阅读时删除列。

columns_to_be_removed = ['a', 'b']

data = pd.read_csv(sourceFileName).drop(columns_to_be_removed, axis = 'columns')

答案 3 :(得分:2)

第1步:使用csv模块

从CSV中获取列标题

第2步:使用usecols读取除要忽略的列之外的所有内容。

import csv
with open("sample.csv", 'r') as f:
    header = next(csv.reader(f))
    # For python 2, use
    # header = csv.reader(f).next()

df = pd.read_csv('sample.csv', usecols=list(set(header) - {'name'}))