python 如果另一列只有重复值,则删除组-panda Dataframe

xtfmy6hx  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(111)

我的问题和这个问题很相似:Drop group if another column has duplicate values - pandas dataframe
我有以下 Dataframe :

letter  value   many    other   variables
A          5            
A          5            
A          8            
A          9            
B          3            
B         10            
B         10            
B          4            
B          5            
B          9            
C         10            
C         10            
C         10            
D          6            
D          8            
D         10            
E          5            
E          5            
E          5            
F          4            
F          4

当按字母分组时,我想删除所有只有重复值的结果组,从而得到如下结果:

letter      value   many    other   variables
A            5          
A            5          
A            8          
A            9          
B            3          
B           10          
B           10          
B            4          
B            5          
B            9          
D            6          
D            8          
D           10

我担心如果我使用duplicate()函数,类似于我在开始时提到的问题,我将删除组(或行)'A'和'B',这应该留在他们的位置。

rhfm7lfc

rhfm7lfc1#

你有几种可能性。
使用duplicatedgroupby.transform

m = (df.duplicated(subset=['letter', 'value'], keep=False)
       .groupby(df['letter']).transform('all')
    )

out = df[~m]
  • 注意。这不会删除具有单行的组。*

使用groupby.transformnunique

out = df[df.groupby('letter')['value'].transform('nunique').gt(1)]
  • 注意。这将删除具有单行的组。*

输出:

letter  value  many  other  variables
0       A      5   NaN    NaN        NaN
1       A      5   NaN    NaN        NaN
2       A      8   NaN    NaN        NaN
3       A      9   NaN    NaN        NaN
4       B      3   NaN    NaN        NaN
5       B     10   NaN    NaN        NaN
6       B     10   NaN    NaN        NaN
7       B      4   NaN    NaN        NaN
8       B      5   NaN    NaN        NaN
9       B      9   NaN    NaN        NaN
13      D      6   NaN    NaN        NaN
14      D      8   NaN    NaN        NaN
15      D     10   NaN    NaN        NaN

相关问题