pandas.read_csv使用skiprows可调用函数时触发索引名称无效错误求助
关于pandas.read_csv的skiprows参数及你的报错问题
先给你明确结论:pandas.read_csv的skiprows参数确实支持可调用函数,官方文档里也提到可以用lambda表达式实现自定义跳过逻辑,你之前查文档的结论是对的~
你的报错原因分析
你写的skiprows=(lambda x: x in [0, 2])会让pandas跳过第0行(也就是CSV的表头行)和第2行数据。问题就出在这里:跳过表头行后,pandas会把原本的第1行数据当成新的表头,这时候CSV里原来的Name、ID这些列名就不存在了——新表头是数据内容,自然找不到你指定的index_col=['Name', 'ID'],所以才会抛出ValueError: Index Name invalid。
修正后的代码示例
如果你的需求是保留表头,只跳过第2行数据,把lambda改成这样就可以了:
df = pd.read_csv('student_scores.csv', index_col=['Name', 'ID'], skiprows=lambda x: x == 2) df.head()
这里的x是行的索引(从0开始计数),x==2只会跳过索引为2的那一行(也就是实际的第三行),表头行(索引0)会被保留,这样pandas就能识别到Name和ID列,顺利设置复合索引。
要是你需要跳过其他行,只要调整lambda里的判断条件就行,核心记住:除非你的CSV没有表头且设置了header=None,否则别跳过索引为0的表头行。
内容的提问来源于stack exchange,提问作者Fran Martinez
相关产品推荐
相关产品推荐

