文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pandas.DataFrame怎么删除指定行和列

2023-07-05 04:56

关注

本篇内容主要讲解“Pandas.DataFrame怎么删除指定行和列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pandas.DataFrame怎么删除指定行和列”吧!

Pandas删除,替换并提取其中的缺失值NaN(dropna,fillna,isnull)

以下数据用作示例代码中的示例。

import pandas as pddf = pd.read_csv('./data/12/sample_pandas_normal.csv', index_col=0)print(df)#          age state  point# name# Alice     24    NY     64# Bob       42    CA     92# Charlie   18    CA     70# Dave      68    TX     70# Ellen     24    CA     88# Frank     30    NY     57

DataFrame指定的行删除

按行名指定(行标签)

它由第一个参数labels和第二个参数axis指定。行指定axis= 0。

print(df.drop('Charlie', axis=0))#        age state  point# name                   # Alice   24    NY     64# Bob     42    CA     92# Dave    68    TX     70# Ellen   24    CA     88# Frank   30    NY     57

默认值为axis = 0,因此可以省略axis。

print(df.drop('Charlie'))#        age state  point# name                   # Alice   24    NY     64# Bob     42    CA     92# Dave    68    TX     70# Ellen   24    CA     88# Frank   30    NY     57

从0.21.0或更高版本开始,它也可以由参数索引指定。

print(df.drop(index='Charlie'))#        age state  point# name                   # Alice   24    NY     64# Bob     42    CA     92# Dave    68    TX     70# Ellen   24    CA     88# Frank   30    NY     57

如果要一次删除多行,请在列表中指定。

print(df.drop(['Bob', 'Dave', 'Frank']))#          age state  point# name                     # Alice     24    NY     64# Charlie   18    CA     70# Ellen     24    CA     88print(df.drop(index=['Bob', 'Dave', 'Frank']))#          age state  point# name                     # Alice     24    NY     64# Charlie   18    CA     70# Ellen     24    CA     88

默认情况下,原始DataFrame保持不变,并返回一个新的DataFrame。如果参数inplace设置为True,则将更改原始DataFrame。在这种情况下,不会返回任何新的DataFrame,并且返回值为None。

按行号指定

如果要按行号指定,请使用DataFrame的index属性。

如果在index属性的[]中指定行号,则可以获得相应的行名。可以在列表中指定多个行号。

print(df.index[[1, 3, 5]])# Index(['Bob', 'Dave', 'Frank'], dtype='object', name='name')

在drop()第一个的参数中指定labels或index的名称。

print(df.drop(df.index[[1, 3, 5]]))#          age state  point# name                     # Alice     24    NY     64# Charlie   18    CA     70# Ellen     24    CA     88print(df.drop(index=df.index[[1, 3, 5]]))#          age state  point# name                     # Alice     24    NY     64# Charlie   18    CA     70# Ellen     24    CA     88

未设置行名的注意事项

如果未设置行名,则index默认为整数序号。当使用数字值而不是这样的字符串作为索引时要小心。

df_noindex = pd.read_csv('./data/12/sample_pandas_normal.csv')print(df_noindex)#       name  age state  point# 0    Alice   24    NY     64# 1      Bob   42    CA     92# 2  Charlie   18    CA     70# 3     Dave   68    TX     70# 4    Ellen   24    CA     88# 5    Frank   30    NY     57print(df_noindex.index)# RangeIndex(start=0, stop=6, step=1)

如果是序列号,则无论原样指定数字值还是使用index属性,结果都将相同。

print(df_noindex.drop([1, 3, 5]))#       name  age state  point# 0    Alice   24    NY     64# 2  Charlie   18    CA     70# 4    Ellen   24    CA     88print(df_noindex.drop(df_noindex.index[[1, 3, 5]]))#       name  age state  point# 0    Alice   24    NY     64# 2  Charlie   18    CA     70# 4    Ellen   24    CA     88

如果由于排序原因其不是序列号,结果将有所不同。当直接指定数字值时,将删除行标签为该数字值的行,而当使用index属性时,将删除其行号为该数字值的行。

df_noindex_sort = df_noindex.sort_values('state')print(df_noindex_sort)#       name  age state  point# 1      Bob   42    CA     92# 2  Charlie   18    CA     70# 4    Ellen   24    CA     88# 0    Alice   24    NY     64# 5    Frank   30    NY     57# 3     Dave   68    TX     70print(df_noindex_sort.index)# Int64Index([1, 2, 4, 0, 5, 3], dtype='int64')print(df_noindex_sort.drop([1, 3, 5]))#       name  age state  point# 2  Charlie   18    CA     70# 4    Ellen   24    CA     88# 0    Alice   24    NY     64print(df_noindex_sort.drop(df_noindex_sort.index[[1, 3, 5]]))#     name  age state  point# 1    Bob   42    CA     92# 4  Ellen   24    CA     88# 5  Frank   30    NY     57

DataFrame指定的列删除

按列名指定(列标签)

它由第一个参数labels和第二个参数axis指定。列指定axis= 1。

print(df.drop('state', axis=1))#          age  point# name               # Alice     24     64# Bob       42     92# Charlie   18     70# Dave      68     70# Ellen     24     88# Frank     30     57

从0.21.0或更高版本开始,可以使用参数列指定它。

print(df.drop(columns='state'))#          age  point# name               # Alice     24     64# Bob       42     92# Charlie   18     70# Dave      68     70# Ellen     24     88# Frank     30     57

如果要一次删除多个列,请在列表中指定。

print(df.drop(['state', 'point'], axis=1))#          age# name        # Alice     24# Bob       42# Charlie   18# Dave      68# Ellen     24# Frank     30print(df.drop(columns=['state', 'point']))#          age# name        # Alice     24# Bob       42# Charlie   18# Dave      68# Ellen     24# Frank     30

参数inplace的使用方法与行的相同。

df_org = df.copy()df_org.drop(columns=['state', 'point'], inplace=True)print(df_org)#          age# name        # Alice     24# Bob       42# Charlie   18# Dave      68# Ellen     24# Frank     30

按列号指定

如果要按列号指定,请使用DataFrame的columns属性。

print(df.columns[[1, 2]])# Index(['state', 'point'], dtype='object')print(df.drop(df.columns[[1, 2]], axis=1))#          age# name        # Alice     24# Bob       42# Charlie   18# Dave      68# Ellen     24# Frank     30print(df.drop(columns=df.columns[[1, 2]]))#          age# name        # Alice     24# Bob       42# Charlie   18# Dave      68# Ellen     24# Frank     30

如果columns是整数值,请小心上述行。

多行多列的删除

从0.21.0及更高版本开始,可以通过同时指定参数index和column来删除多行/多列。

当然,也可以通过行号/列号指定,和使用参数inplace。

print(df.drop(index=['Bob', 'Dave', 'Frank'],              columns=['state', 'point']))#          age# name        # Alice     24# Charlie   18# Ellen     24print(df.drop(index=df.index[[1, 3, 5]],              columns=df.columns[[1, 2]]))#          age# name        # Alice     24# Charlie   18# Ellen     24

到此,相信大家对“Pandas.DataFrame怎么删除指定行和列”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯