Python:从dataframe中删除不匹配多个条件的行
假设我有一个使用pandas.dataframe的列,如下所示:Python:从dataframe中删除不匹配多个条件的行,python,pandas,Python,Pandas,假设我有一个使用pandas.dataframe的列,如下所示: index fruits origin attribute 1 apple USA tasty 2 apple France yummy 3 apple USA juicy 4 apple England juicy 5 apple Japan normal 6
index fruits origin attribute
1 apple USA tasty
2 apple France yummy
3 apple USA juicy
4 apple England juicy
5 apple Japan normal
6 banana Canada nice
7 banana Italy good
.....
我想选择法国的美味苹果(2),然后从表中删除不匹配的苹果,如下所示:
index fruits origin attribute
1 apple France yummy
2 banana Canada nice
3 banana Italy good
.....
我认为下面的方法应该有效。但事实并非如此:
df.drop(df[(df.fruits == "apple") & (df.origin != "France") | (df.fruits == "apple") & (df.attribute != "yummy")].index)
然后我尝试了以下同样不起作用的方法:
df = df[~df[(df.fruits == "apple") & (df.origin != "France") & (df.attribute != "yummy")]
有什么帮助吗,伙计们?如果按匹配条件选择:
df[(df.fruits != 'apple') | ((df.fruits == 'apple') & (df.origin == 'France') & (df.attribute == 'yummy'))]
#index fruits origin attribute
#1 2 apple France yummy
#5 6 banana Canada nice
#6 7 banana Italy good
如果按不匹配条件删除:需要删除的是
水果
是苹果但产地
不匹配法国
或属性
不匹配美味
:
df[~((df.fruits == 'apple') & ((df.origin != 'France') | (df.attribute != 'yummy')))]
# index fruits origin attribute
#1 2 apple France yummy
#5 6 banana Canada nice
#6 7 banana Italy good
如果按匹配条件选择:
df[(df.fruits != 'apple') | ((df.fruits == 'apple') & (df.origin == 'France') & (df.attribute == 'yummy'))]
#index fruits origin attribute
#1 2 apple France yummy
#5 6 banana Canada nice
#6 7 banana Italy good
如果按不匹配条件删除:需要删除的是
水果
是苹果但产地
不匹配法国
或属性
不匹配美味
:
df[~((df.fruits == 'apple') & ((df.origin != 'France') | (df.attribute != 'yummy')))]
# index fruits origin attribute
#1 2 apple France yummy
#5 6 banana Canada nice
#6 7 banana Italy good
@Kevin Yan感谢您让我的问题更具可读性!您可以使用PC上的快捷键CTL+k或Mac上的CMD+k快速格式化代码段。@Kevin Yan感谢您使我的问题更具可读性!您可以在PC上使用快捷键CTL+k或在Mac上使用CMD+k快速格式化代码段。