数据样本:
choice col1 col2 col3
1 100 110 100
2 110 110 100
5 110 110 100
...
50 100 200 300
应成为:
choice col1 col2
1 100 110
2 110 110
5 110 110
...
50 100 200
如果该列的所有除第50行以外的值均为100,则尝试删除第3列。
试图使用:
df['col3'].all() == 100
or
df['col3'].any() == 100
这两行既没有给出结果,也没有产生错误
答案 0 :(得分:2)
使用df.all()
返回True/False
是否满足条件df.eq()
,并将True
反转为False
,反之亦然,使用反转~
,反之亦然。在df.loc[]
的帮助下过滤True
列:
df.loc[:,~df.eq(100).all()]
id col1 col2
1 100 110
2 110 110
3 110 110
编辑:每次编辑时,您都可以尝试使用类似逻辑的自定义功能:
def myfunc(x,choice):
x=x.set_index('choice')
cond=x.loc[:,'col3'].drop(choice).eq(100).all()
if cond:
return x.drop('col3',1).reset_index()
else:
return x.reset_index()
myfunc(df,'50') #if choice column is an integer myfunc(df,50)
choice col1 col2
0 1 100.0 110.0
1 2 110.0 110.0
2 5 110.0 110.0
3 50 100.0 200.0
答案 1 :(得分:1)
您也可以这样做:
df=df.T[~df.eq(100).all()].T
输出:
id col1 col2
1 100 110
2 110 110
3 110 110