如何从Pandas数据帧中删除行列表?

我有一个数据帧df:

>>> df

sales discount net_sales cogs

STK_ID RPT_Date

600141 20060331 2.709 NaN 2.709 2.245

20060630 6.590 NaN 6.590 5.291

20060930 10.103 NaN 10.103 7.981

20061231 15.915 NaN 15.915 12.686

20070331 3.196 NaN 3.196 2.710

20070630 7.907 NaN 7.907 6.459

然后我想删除列表中显示的某些序列号的行,假设这里是[1,2,4],然后离开:

sales discount net_sales cogs

STK_ID RPT_Date

600141 20060331 2.709 NaN 2.709 2.245

20061231 15.915 NaN 15.915 12.686

20070630 7.907 NaN 7.907 6.459

如何或有什么功能可以做到这一点?

bigbug asked 2019-03-14T14:06:37Z

7个解决方案

299 votes

使用DataFrame.drop并传递一系列索引标签:

In [65]: df

Out[65]:

one two

one 1 4

two 2 3

three 3 2

four 4 1

In [66]: df.drop(df.index[[1,3]])

Out[66]:

one two

one 1 4

three 3 2

Theodros Zelleke answered 2019-03-14T14:07:05Z

83 votes

请注意,当您想要执行下拉行时,使用“inplace”命令可能很重要。

df.drop(df.index[[1,3]], inplace=True)

因为您的原始问题没有返回任何内容,所以应该使用此命令。[http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.drop.html]

user3155053 answered 2019-03-14T14:07:48Z

38 votes

您还可以传递给DataFrame.drop标签本身(而不是系列索引标签):

In[17]: df

Out[17]:

a b c d e

one 0.456558 -2.536432 0.216279 -1.305855 -0.121635

two -1.015127 -0.445133 1.867681 2.179392 0.518801

In[18]: df.drop('one')

Out[18]:

a b c d e

two -1.015127 -0.445133 1.867681 2.179392 0.518801

这相当于:

In[19]: df.drop(df.index[[0]])

Out[19]:

a b c d e

two -1.015127 -0.445133 1.867681 2.179392 0.518801

danielhadar answered 2019-03-14T14:08:36Z

28 votes

如果DataFrame很大,并且要删除的行数也很大,那么索引20.5s的简单删除会花费太多时间。

在我的情况下,我有一个带有20.5s的浮点数的多索引DataFrame,我需要从中删除df.drop行。 我找到的最快的方法是非常违反直觉的5min 27s。

设20.5s是要删除的位置索引数组(问题中为df.drop)。

indexes_to_keep = set(range(df.shape[0])) - set(indexes_to_drop)

df_sliced = df.take(list(indexes_to_keep))

在我的情况下,这花了20.5s,而简单的df.drop花了5min 27s并消耗了大量的内存。 生成的DataFrame是相同的。

Dennis Golomazov answered 2019-03-14T14:09:47Z

7 votes

如果我想删除一个让我们说索引为unwanted_indices的行,我会执行以下操作:

df = df[df.index != x]

如果我想删除多个索引(比如这些索引在列表unwanted_indices中),我会这样做:

desired_indices = [i for i in len(df.index) if i not in unwanted_indices]

desired_df = df.iloc[desired_indices]

Divyansh answered 2019-03-14T14:10:38Z

7 votes

我以一种更简单的方式解决了这个问题 - 只需两步。

步骤1:首先形成包含不需要的行/数据的数据帧。

步骤2:使用此不需要的数据帧的索引从原始数据帧中删除行。

例:

假设您有一个数据帧df,其中包含'Age'这一整数列。 现在让我们假设您要删除所有行,其中'Age'为负数。

步骤1:df_age_negative = df [df ['Age']< 0]

第2步:df = df.drop(df_age_negative.index,axis = 0)

希望这更简单,并帮助您。

Krishnaprasad Challuru answered 2019-03-14T14:12:25Z

3 votes

在对@theodros-zelleke的回答的评论中,@ j-jones询问如果索引不是唯一的,该怎么做。 我不得不处理这种情况。 我做的是在我拨打rename_duplicates()之前重命名索引中的重复项,la:

dropped_indexes =

df.index = rename_duplicates(df.index)

df.drop(df.index[dropped_indexes], inplace=True)

其中rename_duplicates()是我定义的函数,它通过索引元素并重命名了重复项。 我使用与列上的pd.read_csv()相同的重命名模式,即"%s.%d" % (name, count),其中name是行的名称,count是先前发生的次数。

mepstein answered 2019-03-14T14:13:15Z

panda是删除行_如何从Pandas数据帧中删除行列表?相关推荐

  1. python千位分隔符_python – 为pandas数据帧中的整数设置千位分隔符

    我正在尝试使用'{:,}'.格式(数字),如下例所示,格式化pandas数据帧中的数字: # This works for floats and integers print '{:,}'.forma ...

  2. pythondataframe如何替换值_如何将pandas dataframe中的字符串值替换为整数?

    我有一个包含几个字符串值的Pandas数据帧. 为了计算相似度,我想用整数值替换它们. 例如:stores[['CNPJ_Store_Code','region','total_facings']]. ...

  3. python列表索引 end start_Pandas:在Pandas数据帧中查找连续索引的startend值

    我有一个如下所示的数据帧(main_df):value created_at 0 18.930542 2019-03-04 02:43:08 UTC 1 18.895210 2019-03-04 02 ...

  4. python怎么汇总数据_如何在Pandas Python中汇总数据?

    通过使用数据上的不同功能,可以获得有关数据的大量信息.但是,如果我们希望获得有关数据的所有信息,则可以使用"描述"功能. 此函数将提供诸如"计数"," ...

  5. python交换两列的位置_如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...

  6. python里的df_python – 从pandas df中删除行

    我想删除pandas df中的所有行.具体来说,当Col A中X下方的行为空时.因此,如果Col A中X下面的行为空,我想删除所有这些行,直到值X下面有一个字符串 import pandas as p ...

  7. pandas 画折线图_如何从Pandas数据帧绘制多个折线图

    我看不出旋转有什么帮助,因为最后你需要把你的数据分两次,一次是一周中的几天,它将被放入几个子区,而城市又将有自己的颜色线.在这一点上,我们已经到了熊猫用它的绘图包装所能做的极限了. Matplotli ...

  8. pandas算加权平均值_python – groupby加权平均值和pandas数据帧中的和

    我有一个数据帧, Out[78]: contract month year buys adjusted_lots price 0 W Z 5 Sell -5 554.85 1 C Z 5 Sell - ...

  9. python列透视_python – 在pandas数据帧中透视列和列值

    我有一个看起来像这样的数据框,但有26行和110列: index/io 1 2 3 4 0 42 53 23 4 1 53 24 6 12 2 63 12 65 34 3 13 64 23 43 期望 ...

最新文章

  1. Struts2+Spring详解
  2. 面试了100个数据分析候选人以后,我总结出了这些面试问题
  3. kbmmw 5.0 中的REST 服务
  4. 分析方法的基础 — 2.业务与管理的拆分,破解难题的钥匙
  5. 【Elasticsearch】ES写入满排查思路-内存溢出
  6. 【Java】Java中的设计模式的介绍以及代码详解
  7. 【渝粤教育】广东开放大学 生产与运作管理 形成性考核 (36)
  8. 苹方字体 android,iOS 9“苹方”字体像安卓被吐槽
  9. 名编辑电子杂志大师教程 | 添加搜索功能
  10. WPS表格如何在数字前面批量增加人民币符号和在后面添加元?
  11. 物理层下面的传输媒体
  12. 解方程计算器,一款数学神器APP,有需要的自己收藏!
  13. struts2拦截器的执行原理分析
  14. 为企业数字人才建粮仓:专访极客邦科技双数研究院院长付晓岩
  15. Python爬虫 之 异步爬虫
  16. 准确查询表空间使用情况
  17. 数学图形之单叶双曲面
  18. 澳门W.B.C开启世界区块链“峰会+嘉年华+学院+全球行”新模式
  19. 联想YOGA14s(2021) i5-11300H MX450双系统安装Ubuntu20.04全过程
  20. 2011网易校园招聘笔试题

热门文章

  1. 如何在IIS添加MIME扩展类型
  2. Unity2D开发小细节
  3. Java数据结构——队列
  4. 对while((pid = waitpid(-1, stat, WNOHANG)) 0)不懂的地方,现在懂了
  5. Silverlight中动画的性能浅析
  6. LeetCode从读题到自闭:1. 两数之和
  7. 寄存器之通用寄存器(一)
  8. ssh报错解决:Permission denied, please try again
  9. Emacs进阶之选择当前word/line
  10. Android解压/重新打包system.img