[英]Python pandas: Multi-column filter using ~df.type.isin and !=
我是 python 的新手,我正在学习 python 为我的业务自动化一些 excels 工作流程。
df = pd.DataFrame({ "Index": list(range(8)),
"Name": ["Joe", "Tom", "Joe", "Tom", "Joe", "Tom", "Joe", "Tom"],
"Age": [23, 54, 34, 42, 23, 54, 42, 42]})
Index Name Age
0 0 Joe 23
1 1 Tom 54
2 2 Joe 34
3 3 Tom 42
4 4 Joe 23
5 5 Tom 54
6 6 Joe 42
7 7 Tom 42
我正在尝试返回 Not "Tom" AND Not "42" 的数据,也就是说我想过滤掉第 3 行和第 7 行,同时保留 rest。
我使用以下代码尝试过滤掉不是 Tom AND 不是 42 的行。
df = df[(df.Name != "Tom") & (df.Age != 42)]
df = df[~df.Name.isin(["Tom"]) & ~df.Age.isin([42])]
但是,我得到的 output 是:
Index Name Age
0 0 Joe 23
2 2 Joe 34
4 4 Joe 23
但是,我想要的 output 是:
Index Name Age
0 0 Joe 23
1 1 Tom 54
2 2 Joe 34
4 4 Joe 23
5 5 Tom 54
6 6 Joe 42
有什么建议么? 谢谢
你非常接近你需要的东西。
df = df[~((df['Name']=='Tom') & (df['Age']==42))]
print(df)
Index Name Age
0 0 Joe 23
1 1 Tom 54
2 2 Joe 34
4 4 Joe 23
5 5 Tom 54
6 6 Joe 42
在这种情况下,它应该不是“汤姆”或不是“42”
df = df[(~(df.Name=="Tom")) | (~(df.Age==42))]
print(df)
Index Name Age
0 0 Joe 23
1 1 Tom 54
2 2 Joe 34
4 4 Joe 23
5 5 Tom 54
6 6 Joe 42
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.