首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫df: 2列中按条件划分的子集帧

熊猫df: 2列中按条件划分的子集帧
EN

Stack Overflow用户
提问于 2022-02-15 10:38:27
回答 2查看 20关注 0票数 0

我想根据2列的条件来子集我的df :日期和个人

条件:

日期必须是非空白的,除非Person =‘Peter’

尝试了代码,但不起作用,它删除日期为空的所有行

代码语言:javascript
复制
df= df[ (df[df.columns[1]]!='peter') & (pd.isnull (df[df.columns[0]])!=True)]

输入

代码语言:javascript
复制
Date        |  Person  | 
            | tom      |
            | peter    |
            | jack     |
2010-10-4   | harry    |
2010-12-4   | sarah  |

期望输出

代码语言:javascript
复制
Date        |  Person  | 
            | peter    |
2010-10-4   | harry    |
2010-12-4   | sarah  |
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-15 10:41:22

您需要使用| (布尔OR):

代码语言:javascript
复制
  # keep if peter               OR    if the data is NOT null
df[df[df.columns[1]].eq('peter') | ~df[df.columns[0]].isnull()]
票数 1
EN

Stack Overflow用户

发布于 2022-02-15 10:41:09

|对按列名按位的OR设置的链式条件:

代码语言:javascript
复制
df = df[df['Person'].eq('peter') | df['Date'].notna()]

或按位置(按DataFrame.iloc选定的列)

代码语言:javascript
复制
df = df[df.iloc[:, 1].eq('peter') | df.iloc[:, 0].notna()]
print (df)
        Date Person
1        NaN  peter
3  2010-10-4  harry
4  2010-12-4  sarah
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71124980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档