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

import pandas as pd

d = ({

'A' : ['X','','','X','Foo','','X','Fou','','X','Bar'],

'B' : ['Val',1,3,'Val',1,3,'Val',1,3,'Val',1],

'C' : ['Val',2,4,'Val',2,4,'Val',2,4,'Val',2],

})

df = pd.DataFrame(data=d)

输出:

A B C

0 X Val Val

1 1 2

2 3 4

3 X Val Val

4 Foo 1 2

5 3 4

6 X Val Val

7 Fou 1 2

8 3 4

9 X Val Val

10 Bar 1 2

我试过了:

df = df[~(df['A'] == 'X').shift().fillna(False)]

但是这会删除X后跟的所有内容.如果X下面的下一行为空,我只希望删除它.

意:

A B C

0 X Val Val

1 Foo 1 2

2 3 4

3 X Val Val

4 Fou 1 2

5 4 4

6 X Val Val

7 Bar 1 2

最佳答案 使用:

m1 = df['A'] == 'X'

g = m1.cumsum()

m = (df['A'] == '') | m1

df = df[~m.groupby(g).transform('all')]

print (df)

A B C

3 X Val Val

4 Foo 1 2

5 3 4

6 X Val Val

7 Fou 1 2

8 3 4

9 X Val Val

10 Bar 1 2

细节:

m1 = df['A'] == 'X'

g = m1.cumsum()

m = (df['A'] == '') | m1

print (pd.concat([df,

df['A'] == 'X',

m1.cumsum(),

(df['A'] == ''),

m,

m.groupby(g).transform('all'),

~m.groupby(g).transform('all')], axis=1,

keys=['orig','==X','g','==space','m', 'all', 'inverted all']))

orig ==X g ==space m all inverted all

A B C A A A A A A

0 X Val Val True 1 False True True False

1 1 2 False 1 True True True False

2 3 4 False 1 True True True False

3 X Val Val True 2 False True False True

4 Foo 1 2 False 2 False False False True

5 3 4 False 2 True True False True

6 X Val Val True 3 False True False True

7 Fou 1 2 False 3 False False False True

8 3 4 False 3 True True False True

9 X Val Val True 4 False True False True

10 Bar 1 2 False 4 False False False True

说明:

>比较X并创建组的累计总和从X到g开始

>链2布尔掩码 – 将X和空白空间与m进行比较

> groupby with transform and DataFrameGroupBy.all for return Trues for groups only only True

>最后反转并按boolean indexing过滤

python里的df_python – 从pandas df中删除行相关推荐

  1. panda是删除行_如何从Pandas数据帧中删除行列表?

    如何从Pandas数据帧中删除行列表? 我有一个数据帧df: >>> df sales discount net_sales cogs STK_ID RPT_Date 600141 ...

  2. python里的shell是什么_python中的shell操作

    http://blog.csdn.net/meng_tianshi/article/details/6682317 首先介绍一个函数: os.system(command) 这个函数可以调用shell ...

  3. 前锋python百度云_关于python:使用索引在pandas DataFrame中设置特定单元格的值

    我创建了一个熊猫数据框架 df = DataFrame(index=['A','B','C'], columns=['x','y']) 得到了这个 x    y A  NaN  NaN B  NaN ...

  4. python里dir是什么意思_python中dir什么作用

    python中dir的作用是:1.dir函数传入数据类型返回该数据类型的所有内置方法:2.dir函数传入模块名返回该模块的所有属性和方法. dir() 内置函数的作用 python 内置方法有很多,无 ...

  5. python里object是什么类型_Python中的object这个叫做基类的类,它的属性和行为都有哪些?...

    声明:以下仅为个人学习Python过程中总结的比较自洽的理解,事实上Python面向对象模型可能没那么简单.经查阅,Python在以前的版本还有不继承自object的类,叫做经典类. 用dir(obj ...

  6. python里的关键字有哪些_Python中的yield关键字做了什么?

    Python中的yield关键字做了什么 要理解yield做了什么,就必须明白生成器(generators)为何物,而在明白生成器之前还要知道迭代器(iterables). 1.迭代器 当我们创建一个 ...

  7. python里compile的作用_Python代码中compile()函数具有哪些功能呢?

    摘要: 下文讲述Python代码中compile()函数的功能说明,如下所示: compile()函数功能说明 compile()函数功能: 用于将一个字符串编译为字节代码 compile()函数语法 ...

  8. python里的关键字有哪些_Python 中的关键字有哪些?

    在Python中,具有特殊功能的标识符称为关键字.关键字是Python语言自己已经使用的了,不允许开发者自己定义和关键字相同名字的标识符.Python中的关键字如下所示: Falsedefifrais ...

  9. python里randint是什么意思_Python中random.randint方法(精选)

    Python中 random.randint方法的具体用法?Python 中random.randint怎么用?Python 中random.randint使用的例子?以下例子或许可以帮助到你: 示例 ...

最新文章

  1. leetcode算法题--将数字变成 0 的操作次数
  2. WiFi Deauthenticated Reason Codes
  3. ipad鼠标圆圈变成箭头_【附视频指南】iPad 只能刷剧?来看看我是如何把它武装成生产力工具的!...
  4. Leetcode475.Heaters供暖器
  5. 【iOS与EV3混合机器人编程系列之一】iOS要干嘛?EV3可以更酷!
  6. 软考网络工程师+计算机等级考试四级网络工程师--MAN标准LAN标准
  7. python自带的库有哪些_python自带库
  8. ASM的普通盘转AFD
  9. 联通HG8347R WO-36光猫 当前用户不允许登录解决办法
  10. 如何产生JIC文件(sof+ELF=jic)
  11. Cadence Allegro怎么从2层板添加层到4层板
  12. A段架构设计_隽语集(Business Thinking _1201)
  13. intellij idea实现代码实时翻译的插件开发
  14. [图]部分Surface Book 2升级Windows 10 May 2019出现显卡兼容问题
  15. python协同过滤电影推荐_推荐系统:基于用户和模型的协同过滤电影推荐
  16. mysql 存储过程中 if else的使用 和赋值方式
  17. span标签的使用场景
  18. 【升级华为网络设备及失败修复】
  19. 万字长文!对比分析了多款存储方案,KeeWiDB最终选择自己来
  20. Leetcode3:最长不重复子串

热门文章

  1. 堆栈操作合法性 C++
  2. 配置windows时间服务器
  3. Markdown使用说明
  4. 【Hive】SemanticException Expression not in group by key
  5. Html5,Css3快速注释快捷键
  6. 基于KNN算法的颜色识别
  7. 基于凌鸥平台的两电阻采样无感FOC PMSM方案
  8. Python变量类型声明
  9. Php目录结构解析,深入理解PHP之源码目录结构与功能说明
  10. 王者荣耀8月25服务器维护,王者荣耀8月15日更新维护几点开始?王者荣耀更新维护多久...