例如,我有一个名为dat的数据框,那么我想在该数据框的每一列上应用一个函数,如果返回值为Ture,则保留此列并转到下一个列,如果返回值为False ,然后放下此列并转到下一列。
我知道我可以编写一个for循环来执行此操作,但是有有效的方法吗?
答案 0 :(得分:0)
您可以在df.columns上使用布尔索引来做到这一点:
为简化起见,我想删除所有'sum'大于50的列
df = pd.DataFrame({'A':[2,4,6,8],'B':[101,102,102,102]})
r = df.apply(np.sum) # applies the sum function to all columns
c = r <= 50 #create boolean test for columns
df[c[c].index] #Use boolea indexing to get columns and column filter for dataframe
输出:
A
0 2
1 4
2 6
3 8