如何为包含2个名称的列执行pandas set_index操作(附报错)
报错原因
你这段代码触发语法错误有两个核心问题:
- pandas不存在
pd.df_bm这个内置方法,不管是创建DataFrame还是设置索引,都没有这个接口,属于方法名书写错误 - Python语法不允许在小括号
()内直接写键: 值形式的字典结构,字典必须用大括号{}包裹,解释器识别到冒号位置不符合语法规则,就直接抛出了SyntaxError。
正确实现方案
你要实现给包含多个列名的DataFrame设置索引的操作,分两种常见场景写代码即可:
- 从零创建DataFrame并设置多列索引
import pandas as pd # 构造数据集,字典用大括号包裹,键是列名,值是列对应的数据 data = { "player": [1, 2], # 补充你需要的第二列、第三列数据,这里以score列举例 "score": [88, 92], "round": [1, 2] } # 调用pd.DataFrame创建数据框,再链式调用set_index传入要设为索引的列名列表 df_bm = pd.DataFrame(data).set_index(["player", "round"])
- 对已存在的DataFrame设置多列索引
# 假设df_bm是你已经加载完成、包含目标列的DataFrame # 把需要设为索引的列名按顺序放在列表里传给set_index即可 df_bm = df_bm.set_index(["player", "你的第二个目标列名"])
补充说明:
set_index默认不会修改原始DataFrame,如果你想直接在原数据上生效不用重新赋值,可以加参数inplace=True,写法为df_bm.set_index(["player", "你的第二个目标列名"], inplace=True)。
内容的提问来源于stack exchange,提问作者Eduardo Amorim
相关产品推荐
相关产品推荐

