使用groupby过滤重复值

时间:2019-11-14 22:53:22

标签: python pandas

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

我正在尝试从DataFrame 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”中使用不同的列名

谢谢

2 个答案:

答案 0 :(得分:4)

duplicated

df[df.duplicated(['city', 'name'], keep=False)]

答案 1 :(得分:1)

您应该groupby两列'city','name'

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