df.set_index()未按预期工作:索引设置与行删除异常问题
解决DataFrame索引设置与行删除问题
我明白你的困扰——你已经把DataFrame的索引设置为名为index的列,想要通过这个索引来删除行,同时让Barangay列作为普通特征列而非索引,但目前删除操作还是默认参考Barangay列,甚至尝试删除索引[0,1]的行时还报错。咱们一步步来搞定这个问题:
1. 先确认索引是否真的设置成功
有时候可能设置索引的操作没生效,或者之前Barangay就是索引没重置,导致你的设置被覆盖。先检查当前DataFrame的索引:
print(df.index)
如果输出不是你期望的index列内容,那得重新正确设置索引:
- 如果
Barangay之前是索引,先把它变回普通列:# 重置索引,把原索引(Barangay)转为普通列 df = df.reset_index() - 再将
index列设置为索引:# 方法1:返回新的DataFrame,不修改原数据 df = df.set_index('index') # 方法2:直接修改原DataFrame df.set_index('index', inplace=True)
2. 正确通过新索引删除行
当索引成功设置为index列后,就可以用drop()方法指定索引值来删除行了:
# 删除索引值为0和1的行 df.drop([0, 1], inplace=True)
如果之前报错,大概率是因为你尝试删除的索引值(比如0、1)在当前索引里不存在——比如之前Barangay是索引,它的值不是数值型的0、1,所以找不到对应行。现在用正确的索引值就能解决这个问题。
3. 确认Barangay是普通特征列
设置完索引后,你可以检查一下列列表,确保Barangay在其中:
print(df.columns)
只要它出现在输出的列名里,就说明它已经是普通特征列,不会被当作索引来使用了。
内容的提问来源于stack exchange,提问作者olbinado11
相关产品推荐
相关产品推荐

