python-3.x - 如何根据条件删除熊猫中的行?
问题描述
我有以下数据框
df = pd.DataFrame([['1','aa','ccc','rere','thth','my desc 1','','my feature2 1'], ['1','aa','fff','flfl','ipip','my desc 2','',''], ['1','aa','mmm','rprp','','','',''], ['2','aa','ccc','rprp','','','my feature1 1',''], ['2','aa','fff','bubu','thth','my desc 3','',''], ['2','aa','mmm','fafa','rtrt','my desc 4','',''], ['3','aa','ccc','blbl','thth','my desc 5','my feature1 2','my feature2 2'], ['3','aa','fff','arar','amam','my desc 6','',''], ['3','aa','mmm','acac','ryry','my desc 7','',''],['4','bb','coco','rere','','','','my feature2 3'], ['4','bb','inin','mimi','rere','my desc 8','',''], ['4','bb','itit','toto','enen','my desc 9','',''], ['4','bb','spsp','glgl','pepe','my desc 10','',''], ['5','bb','coco','baba','mpmp','my desc 11','my feature1 3',''], ['5','bb','inin','rere','','','',''],['5','bb','itit','toto','hrhr','my desc 12','',''], ['5','bb','spsp','glgl','lolo','my desc 13','','']], columns=['foo', 'bar','name_input','value_input','bulb','desc','feature1', 'feature2'])
现在,我需要删除行以获得以下输出。
df = pd.DataFrame([['1','aa','ccc','rere','thth','my desc 1','','my feature2 1'], ['2','aa','ccc','rprp','','my desc 3','my feature1 1',''], ['3','aa','ccc','blbl','thth','my desc 5','my feature1 2','my feature2 2'], ['4','bb','coco','rere','','my desc 8','','my feature2 3'], ['5','bb','coco','baba','mpmp','my desc 11','my feature1 3','']], columns=['foo', 'bar','name_input','value_input','bulb','desc','feature1', 'feature2'])
我尝试了以下。而且它们似乎都不起作用。
df= df.dropna(subset=['feature1', 'feature2'])
df.dropna(thresh=5, axis=0, inplace=True)
df= df[df.feature2.notnull()]
df= df[pd.notnull(df[['feature1', 'feature2']])]
任何帮助深表感谢!
解决方案
astype(bool)
False
空字符串在布尔上下文中进行评估。用于filter
仅获取以 . 开头的列feature
。然后使用astype(bool)
,然后any(axis=1)
df[df.filter(regex='fea').astype(bool).any(1)]
foo bar name_input value_input bulb desc feature1 feature2
0 1 aa ccc rere thth my desc 1 my feature2 1
3 2 aa ccc rprp my feature1 1
6 3 aa ccc blbl thth my desc 5 my feature1 2 my feature2 2
9 4 bb coco rere my feature2 3
13 5 bb coco baba mpmp my desc 11 my feature1 3
为了匹配您的结果,我们可以回填该desc
列
feat = df.filter(regex='feat').astype(bool).any(1)
desc = df.desc.where(df.desc.astype(bool)).bfill()
df.assign(desc=desc)[feat]
foo bar name_input value_input bulb desc feature1 feature2
0 1 aa ccc rere thth my desc 1 my feature2 1
3 2 aa ccc rprp my desc 3 my feature1 1
6 3 aa ccc blbl thth my desc 5 my feature1 2 my feature2 2
9 4 bb coco rere my desc 8 my feature2 3
13 5 bb coco baba mpmp my desc 11 my feature1 3
推荐阅读
- module - Opencart 相关选项
- dns - 如何在 PHP 中使用域名而不是本地主机 IP
- macos - Android Studio:提取方法快捷方式“⌥+⌘+M”(Option-Command-M)不再工作(macOS Mojave)
- python - 在数据框列中选择非重复值
- excel - VBA宏打开/保存/关闭文件夹和子文件夹中的工作簿
- javascript - 在不知道加密方法的情况下,通过给定的密码和盐对用户进行身份验证
- python - 具有多值(概率)函数的神经网络回归
- mysql - 在非主键之间创建外键关系时出错
- scala - Scala,couchbase - 将 AsyncN1qlQueryResult 转换为自定义对象
- polymorphism - 如何使用可选参数对在 ReasionML/BuckleScript 中生成 Js.t 对象的函数进行 curry?