使用给定列中的唯一元素删除pandas dataFrame的行。 (通过我独特的意思重复一次)

时间:2018-04-13 17:35:14

标签: python pandas dataframe row unique

假设我有以下dataFrame,我想删除包含10和100的行,即在col1中只出现过一次的元素。

DataFrame

我可以做以下事情:

a = df.groupby('col1').size()
b = list(a[a == 1].index)

然后有一个for循环并逐行删除行:

d_ind = df[df['col1']==b[0]].index
df.drop(d_ind, axis=0, inplace=True)

有更快,更有效的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以在col1上使用keep=False方法,该方法可以检测元素是否与df[df.col1.duplicated(keep=False)] # col1 col2 months #0 1 3 6 #1 1 4 6 #4 4 20 6 #5 4 11 7 #6 4 12 7 参数重复,并返回一个布尔系列,您可以将其用于 subset /过滤/删除行:

enum Options{
    ADDITION(1),
    MULTIPLICATION(2),
    EVALUATION(3),
    DERIVIATE(4),
    EXIT(5);

    public final int value;

     Options(int value){
         this.value = value;
     }

     public int getValue() {
         return value;
     }

     public static Options convert(int n) {
         for(Options o : values())
             if(o.getValue() == n)
                 return o;
         return null;
     }

}