在Pandas Dataframe中查找重复的行,然后在Dataframe中添加一个列,表明该行是否重复

时间:2017-07-30 21:17:56

标签: python pandas dataframe duplicates

我有一个pandas数据框,其中包含一个可能重复的列。我想创建一个列,如果该行是重复的,将生成1,如果不是,则生成0。

所以,如果我有:

     A|B
1    1|x
2    2|y
3    1|x
4    3|z

我会得到:

     A|B|C
1    1|x|1
2    2|y|0
3    1|x|1
4    3|z|0

我尝试了df['C'] = np.where(df['A']==df['A'], '1', '0'),但这只是在C中创建了一个全1的列。

1 个答案:

答案 0 :(得分:7)

首先需要Series.duplicated带参数keep=False的所有重复项,然后将布尔值掩码(TrueFalse s)转换为1 s和{ {1}} astype 0 {}},然后根据需要投放到int

str

如果需要检查列df['C'] = df['A'].duplicated(keep=False).astype(int).astype(str) print (df) A B C 1 1 x 1 2 2 y 0 3 1 x 1 4 3 z 0 A中的重复项,请一起使用DataFrame.duplicated

B

numpy.where解决方案:

df['C'] = df.duplicated(subset=['A','B'], keep=False).astype(int).astype(str)
print (df)
   A  B  C
1  1  x  1
2  2  y  0
3  1  x  1
4  3  z  0