在Python中对重复行进行子集处理

3

我有一个数据框,长这样:

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

我只想要那些具有相同姓名、州和性别的行。所以不应该出现Jim。每行的“其他变量”都不同。

2个回答

4
你可以使用由 duplicated 创建的掩码进行 布尔索引
df = df[df.duplicated(['Name','State','Gender'])]
print (df)

  Name State Gender
2  Sam    CO      M

1
使用 pandas.DataFrame.duplicated 函数并带上参数 subset
示例:
duplicates = df.duplicated(subset=['Name', 'State', 'Gender'])
df[duplicates]

查看文档


感谢您的帮助。 - J Sedai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接