Python pandas.read\u csv中的skiprows参数是否接受可调用函数?

Python pandas.read\u csv中的skiprows参数是否接受可调用函数?,python,pandas,Python,Pandas,我阅读了关于read_csv函数的pandas文档,它说它可以接受skiprows参数的可调用函数 他们在这里列出()可以使用lambda表达式。但是,当我尝试实现它时,我收到了以下错误: ValueError:索引名称无效 代码 df = pd.read_csv('student_scores.csv', index_col=['Name', 'ID'], skiprows= (lambda x: x in [0, 2])) df.head() 你猜为什么 谢谢 PS.以csv格式打印数据结

我阅读了关于read_csv函数的pandas文档,它说它可以接受skiprows参数的可调用函数

他们在这里列出()可以使用lambda表达式。但是,当我尝试实现它时,我收到了以下错误:

ValueError:索引名称无效

代码

df = pd.read_csv('student_scores.csv', index_col=['Name', 'ID'], skiprows= (lambda x: x in [0, 2]))
df.head()
你猜为什么

谢谢


PS.以csv格式打印数据结构的屏幕。

正在进行的是[0,2]中的
skiprows=lambda x:x和
index\u col=['Name','ID']
的组合效果

文件中的第一行包含列名,但[0,2]中的
skiprows=lambda x:x
会使您跳过第一行(,它的索引为0)。这样,
read\u csv
无法正确推断列名,当您指定
index\u col=['Name','ID']
时,它会失败,因为它找不到任何具有该名称的列

注意:我使用@jezrael的示例文件作为csv:

temp=u"""Name;ID;val
X;A;100
Y;A;50.5
Z;A;60
E;B;90
F;B;45
G;C;100"""
这:

之所以有效,是因为可以通过列的位置指定列,从而避免了名称问题

证明:
什么是你的
pandas.\uuu版本\uuuuu
?pandas版本是0.20.3你给版本
0.22
的文档打分的链接,但从我看到的情况来看,skiprows也应该接受版本
0.20
中的可调用链接。是否您的问题的根源是
index\u col=['Name','ID']
?错误消息似乎指出
Name
列有问题。您是正确的GPhilo。当我删除多索引时,我能够按照我的意愿检索数据集。请把文件的实际内容(原始文本)放在问题中。没有人能够用read_csv从屏幕截图中读取数据。是的,现在明白了。
df = pd.read_csv(pd.compat.StringIO(temp), sep=";", index_col=[0, 1], skiprows= [0, 2])
df = pd.read_csv(pd.compat.StringIO(temp), sep=";", index_col=[0, 1], skiprows= lambda x : x in [1, 2]) # works, not skipping column names' row

df = pd.read_csv(pd.compat.StringIO(temp), sep=";", names=['Name', 'ID', 'val'], index_col=[0, 1], skiprows= ['Name', 'ID']) # works (explicit column naming)