如何查找仅具有特定列值的行

时间:2019-07-15 06:06:10

标签: python-3.x pandas

我正在尝试找出仅具有特定列值且没有其他内容的名称。

我尝试根据列值过滤行,但这不是我想要的,我想要只去吃披萨的名字。

我想要只吃披萨的名字,所以我的代码应该只返回John,而不是pet,因为john只吃披萨

Click to view data frame

1 个答案:

答案 0 :(得分:1)

您的描述不清楚。首先,看起来简单的.loc就足够了。但是,在查看示例数据的图片之后,我意识到这并不是那么简单。要获得所需的内容,您需要识别仅具有一个names值的重复或不重复的Restaurant,然后选择它。为此,您需要使用nunique并检查eq(1),并为其分配掩码m。最后,使用m进行切片以获取所需的输出:

您的样本数据:

In [512]: df
Out[512]:
    Name    Restaurant
0   john  pizza
1  peter    kfc
2   john  pizza
3  peter  pizza
4  peter    kfc
5  peter  pizza
6   john  pizza

m = df.groupby('Name').Restaurant.transform('nunique').eq(1)
df[m]

Out[513]:
   Name    Res
0  john  pizza
2  john  pizza
6  john  pizza

如果您只想显示一行,只需链接其他.drop_duplicates

df[m].drop_duplicates()

Out[515]:
   Name    Restaurant
0  john  pizza