我想根据2列的条件来子集我的df :日期和个人
条件:
日期必须是非空白的,除非Person =‘Peter’
尝试了代码,但不起作用,它删除日期为空的所有行
df= df[ (df[df.columns[1]]!='peter') & (pd.isnull (df[df.columns[0]])!=True)]输入
Date | Person |
| tom |
| peter |
| jack |
2010-10-4 | harry |
2010-12-4 | sarah |期望输出
Date | Person |
| peter |
2010-10-4 | harry |
2010-12-4 | sarah |发布于 2022-02-15 10:41:22
您需要使用| (布尔OR):
# keep if peter OR if the data is NOT null
df[df[df.columns[1]].eq('peter') | ~df[df.columns[0]].isnull()]发布于 2022-02-15 10:41:09
按|对按列名按位的OR设置的链式条件:
df = df[df['Person'].eq('peter') | df['Date'].notna()]或按位置(按DataFrame.iloc选定的列)
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 sarahhttps://stackoverflow.com/questions/71124980
复制相似问题