Python pandas.read\u csv中的skiprows参数是否接受可调用函数?
我阅读了关于read_csv函数的pandas文档,它说它可以接受skiprows参数的可调用函数 他们在这里列出()可以使用lambda表达式。但是,当我尝试实现它时,我收到了以下错误: ValueError:索引名称无效 代码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格式打印数据结
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)