在pandas DataFrame - python中返回具有公共列值的条目

时间:2017-05-02 10:27:53

标签: python pandas dataframe

我在python pandas中有一个DataFrame,它包含几个在列中也有整数值的不同条目(行),例如:

   A  B  C  D  E  F  G  H
0  1  2  1  0  1  2  1  2  
1  0  1  1  1  1  2  1  2
2  1  2  1  2  1  2  1  3
3  0  1  1  1  1  2  1  2 
4  2  2  1  2  1  2  1  3

我只返回包含列中常见值的行,结果应为:

   A  B  C  D  E  F  G  H  
1  0  1  1  1  1  2  1  2
3  0  1  1  1  1  2  1  2 

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以使用传递参数keep=False的{​​{3}}中的布尔掩码:

In [3]:
df[df.duplicated(keep=False)]

Out[3]:
   A  B  C  D  E  F  G  H
1  0  1  1  1  1  2  1  2
3  0  1  1  1  1  2  1  2

这是显示重复行的掩码,传递keep=False返回所有重复行,默认情况下它将返回第一个重复行:

In [4]:
df.duplicated(keep=False)

Out[4]:
0    False
1     True
2    False
3     True
4    False
dtype: bool

答案 1 :(得分:1)

需要duplicated参数keep=False才能返回duplicated所有重复项:

print (df.duplicated(keep=False))
0    False
1     True
2    False
3     True
4    False
dtype: bool

df = df[df.duplicated(keep=False)]
print (df)
   A  B  C  D  E  F  G  H
1  0  1  1  1  1  2  1  2
3  0  1  1  1  1  2  1  2

如果需要删除第一个或最后一个重复行,请使用:

df1 = df[df.duplicated()]
#same as 'first', default parameter, so an be omit
#df1 = df[df.duplicated(keep='first')]
print (df1)
   A  B  C  D  E  F  G  H
3  0  1  1  1  1  2  1  2

df2 = df[df.duplicated(keep='last')]
print (df2)
   A  B  C  D  E  F  G  H
1  0  1  1  1  1  2  1  2