在Python中子集重复行

时间:2016-11-29 20:10:42

标签: python-3.x pandas

我的数据框看起来像:

Name    State    Gender    OtherVariables
Sam     CO       M
Sam     CO       F
Sam     CO       M
Jim     CO       M
Jim     WY       M

以下代码为我提供了所有重复的名称:( Sam和Jim):

def list_duplicates(seq):
  seen = set()
  seen_add = seen.add
  seen_twice = set(x for x in seq if x in seen or seen_add(x))
  return list(seen_twice)

dups = list_duplicates(df.name)

但我想要的是:

Name    State    Gender
Sam     CO       M

我只想要那些具有相同名称,状态和性别的行。所以吉姆不应该在那里。 " OtherVariables"每一行都不同。

2 个答案:

答案 0 :(得分:3)

您可以将boolean indexingduplicated创建的掩码一起使用:

df = df[df.duplicated(['Name','State','Gender'])]
print (df)

  Name State Gender
2  Sam    CO      M

答案 1 :(得分:1)

pandas.DataFrame.duplicatedsubset参数一起使用。

示例:

duplicates = df.duplicated(subset=['Name', 'State', 'Gender'])
df[duplicates]

See the documentation