Python 按字段中的位置或索引访问列

Python 按字段中的位置或索引访问列,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我有一个如下的列表,我在csv文件中搜索它,以获得与之关联的项目代码。例如,对于0->项目代码为11nm L = [0, 2] CSV file: 0, 11nm 1, 22nm 2, 33nm 3, 44nm 我目前正在做如下工作 df = pd.read_csv('item_code.csv', sep = ',') item_codes= df[df["No"].isin(L)]["item_code"].tolist() 但是,现在我想知道,当文件标题(否,项代码)不可用时,如何对

我有一个如下的列表,我在csv文件中搜索它,以获得与之关联的项目代码。例如,对于0->项目代码为11nm

L = [0, 2]

CSV file:
0, 11nm
1, 22nm
2, 33nm
3, 44nm
我目前正在做如下工作

df = pd.read_csv('item_code.csv', sep = ',')
item_codes= df[df["No"].isin(L)]["item_code"].tolist()
但是,现在我想知道,当文件标题(否,项代码)不可用时,如何对csv文件执行相同的操作


请帮助我。

您可以使用参数
名称
指定列名称,选择列使用:

或者使用参数
header=None
作为默认列名称
0,1…

df = pd.read_csv('item_code.csv', header=None)

print (df)
   0     1
0  0  11nm
1  1  22nm
2  2  33nm
3  3  44nm

#first column selected by position with iloc
item_codes= df.loc[df.iloc[:,0].isin(L), 1].tolist()
print (item_codes)
['11nm', '33nm']


读取带有
header=None
的csv文件后,要让Panda知道您的文件中没有头,请执行以下操作:

df = pd.read_csv('item_code.csv', sep = ',', header=None)
可以使用列索引而不是列名

像这样:

df[df[0].isin(L)][1].tolist()
或者这个:

df[df.iloc[:,0].isin(L)][1].tolist()

说明: 如果在读取数据帧后使用
print(df)

您会注意到,pandas将编号
[0,1]
分配给列名,而不是不作为标题出现的
[“No”,“item\u code”]
。因此,您可以使用其索引引用每一列,如
df[0]
df.iloc[:,0]


后者
df.iloc[:,0]
告诉pandas获取所有行,只获取列
0

当列名不可用时,您可以使用
df.iloc
按索引引用它们:

item_codes = df[df.iloc[:, 0].isin(L)].iloc[:, 1].tolist()

MCVE:

注:

  • sep=',\s*'
    是一种正则表达式模式(用于指定列分隔符)
  • header=None
    将阻止分配任何行
  • engine='python'
    选择正则表达式引擎
df[df.iloc[:,0].isin(L)][1].tolist()
   0     1
0  0  11nm
1  1  22nm
2  2  33nm
3  3  44nm
item_codes = df[df.iloc[:, 0].isin(L)].iloc[:, 1].tolist()
import pandas as pd
import numpy as np
import io

text = \
'''0, 11nm
1, 22nm
2, 33nm
3, 44nm'''

buf = io.StringIO(text)    
df = pd.read_csv(buf, sep=',\s*', header=None, engine='python') # no column names
print(df) 

   0     1
0  0  11nm
1  1  22nm
2  2  33nm
3  3  44nm

L = [0, 2]
item_codes = df[df.iloc[:, 0].isin(L)].iloc[:, 1]
print(item_codes)

0    11nm
2    33nm
Name: 1, dtype: object

print(item_codes.tolist())
['11nm', '33nm']