python - 如何用 Pandas 选择重复的行?

标签 python pandas dataframe subtraction divide

我有一个这样的数据框:

import pandas as pd
dic = {'A':[100,200,250,300],
       'B':['ci','ci','po','pa'],
       'C':['s','t','p','w']}
df = pd.DataFrame(dic)

我的目标是将行分隔为 2 个数据帧:

  • df1 = 包含不沿 B 列重复值的所有行(非队列行)。
  • df2 = 仅包含重复主题的行。

结果应该是这样的:

df1 =      A  B C         df2 =     A  B C
      0  250 po p               0  100 ci s 
      1  300 pa w               1  250 ci t

注意:

  • 数据帧通常可能非常大,并且有许多值在 B 列中重复,因此答案应尽可能通用
    • 如果没有重复项,df2 应该是空的!所有的结果都应该在 df1 中

最佳答案

您可以使用 Series.duplicated使用参数 keep=False 为所有重复项创建掩码,然后 boolean indexing , ~ 反转mask:

mask = df.B.duplicated(keep=False)
print (mask)
0     True
1     True
2    False
3    False
Name: B, dtype: bool

print (df[mask])
     A   B  C
0  100  ci  s
1  200  ci  t

print (df[~mask])
     A   B  C
2  250  po  p
3  300  pa  w

关于python - 如何用 Pandas 选择重复的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41042996/

相关文章:

python - 使用 Python pandas 检查列是否包含相同的值或 NaN

Python - 从上面的文件访问导入的模块

python - 为什么 pd.concat({}, axis=1) 比 pd.concat({}, axis=0).unstack(0) 慢?

python - 查找两个值并填写

R:结合数据集和查找表以将值提取到新列

python - 同时将 Pandas 函数应用于行和列以进行置信区间计算

Python 定期从列表中删除项目

python - 从包含 RGB 值的文件中拆分 R、G 和 B 值的有效方法(没有 NumPy)

python - 关于使用 Queue()/deque() 和类变量进行通信和 "poison pill"的进程与线程

python - 从另一个数据帧向后添加基于 pandas 数据帧的索引中的整数