假设我有以下dataFrame,我想删除包含10和100的行,即在col1中只出现过一次的元素。
我可以做以下事情:
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)
有更快,更有效的方法吗?
答案 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;
}
}