我正在尝试找出仅具有特定列值且没有其他内容的名称。
我尝试根据列值过滤行,但这不是我想要的,我想要只去吃披萨的名字。
我想要只吃披萨的名字,所以我的代码应该只返回John,而不是pet,因为john只吃披萨
答案 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