pandas DataFrame 删除行或列的方法详解
本文详细介绍如何使用 pandas 的 drop 函数删除 DataFrame 中的指定行或列。通过设置 axis 参数区分操作对象,并重点讲解 inplace 参数在原地修改数据时的应用,同时提及不同 pandas 版本中参数用法的差异及注意事项。
pandas DataFrame 删除行或列的方法详解
本文继续探讨 DataFrame 的相关操作。
在实际使用 DataFrame 时,删除操作的使用频率相对较低,通常的做法是从源 DataFrame 中筛选出所需数据,构建一个新的 DataFrame 再进行后续处理。
删除 DataFrame 的某一列
1. 删除 DataFrame 的某一列
这里我们沿用上一节生成的 DataFrame 作为示例,原始数据如下:

我们使用 drop() 函数,该函数接收一个列表参数 labels,书写时可以选择显式指定 labels=[xxx],也可以省略。列表中列出需要删除的行或列的名称,默认情况下针对行名进行删除。若需删除列,则需额外添加参数 axis=1,具体操作如下:
#pd.__version__ =='0.18.0'
#drop columns
test_dict_df.drop(['id'],axis=1)
#test_dict_df.drop(columns=['id']) # official operation, maybe my pandas version needs update!
执行结果如上所示。对于上述代码,官方教程文档中提到了 columns=['name'] 的写法,但在我的测试环境中(Python 3,pandas 0.18 版本)会报错,这可能是因为使用的 pandas 版本较旧所致。

需要注意的是,此处输出的结果是执行该方法后的返回值,而非 test_dict_df 的内容。这是因为该方法默认并不在原 DataFrame 上直接执行操作,此时输出 test_dict_df 仍然显示未进行删除操作前的原始 DataFrame。若希望直接在原 DataFrame 上进行修改,需要添加 inplace=True 参数,这等同于执行操作后再将结果赋值给原变量:
test_dict_df.drop(['id'],axis=1,inplace=True)
# test_dict_df = test_dict_df.drop(['id'],axis=1)
删除 DataFrame 的某一行
2. 删除 DataFrame 的某一行
删除某一行在之前删除列的操作中已有提及。如果不指定 axis=1,则默认按行号进行删除。例如,要删除第 0 行和第 4 行:
test_dict_df.drop([0,4])

同样地,若要在源 DataFrame 上直接进行修改,必须加上 inplace 参数,否则 test_dict_df 不会发生任何改变。
此外,如果你的 DataFrame 包含多级索引,还可以使用 level 参数,此处不再赘述。
以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













