Python 使用groupby筛选重复值

Python 使用groupby筛选重复值,python,pandas,Python,Pandas,我正在阅读文档以了解与groupby一起使用时的方法过滤器。为了理解它,我有以下场景: 我试图从我的数据帧df中获得按城市分组的重复名称。 以下是我的尝试: df = pd.DataFrame({ 'city':['LA','LA','LA','LA','NY', 'NY'], 'name':['Ana','Pedro','Maria','Maria','Peter','Peter'], 'age':[24, 27, 19, 34, 31, 20], 'sex':

我正在阅读文档以了解与groupby一起使用时的方法过滤器。为了理解它,我有以下场景:

我试图从我的数据帧df中获得按城市分组的重复名称。 以下是我的尝试:

df = pd.DataFrame({
    'city':['LA','LA','LA','LA','NY', 'NY'],
    'name':['Ana','Pedro','Maria','Maria','Peter','Peter'],
    'age':[24, 27, 19, 34, 31, 20],
    'sex':['F','M','F','F','M', 'M'] })

df_filtered = df.groupby('city').filter(lambda x: len(x['name']) >= 2)

df_filtered
我得到的结果是:

city    name    age sex
LA      Ana     24  F
LA      Pedro   27  M
LA      Maria   19  F
LA      Maria   34  F
NY      Peter   31  M
NY      Peter   20  M
我期望的结果是:

city    name    age sex
LA      Maria   19  F
LA      Maria   34  F
NY      Peter   31  M
NY      Peter   20  M
我不清楚在哪些情况下必须在groupby方法和filter方法内部的len中使用不同的列名

谢谢

您应该按两列“城市”、“姓名”分组

您应该按两列“城市”、“名称”分组

复制一下怎么样:

复制一下怎么样:


非常感谢。请您解释一下,在什么情况下,您可以在lenx[column_name]中指定列名?@AfonsoSA lenx等于lenf,这将返回DataFramework的行号计数谢谢。请您解释一下,在什么情况下,您会在lenx[column_name]中指定列名?@AfonsoSA lenx等于Lenf,它将返回数据帧的行号计数
Yourdf=df.groupby(['city','name']).filter(lambda x : len(x)>=2)
Yourdf
Out[234]: 
  city   name  age sex
2   LA  Maria   19   F
3   LA  Maria   34   F
4   NY  Peter   31   M
5   NY  Peter   20   M
df[df.duplicated(['city', 'name'], keep=False)]