在Numpy中,使用where
将为您提供原始数组的子集。例如,
import numpy as np
np.where(np.arange(5)>2)[0]
将返回array([3, 4])
。我想和熊猫做类似的事情。但是,如果我像这样定义一个类似的DataFrame:
import pandas as pd
df = pd.DataFrame(data=range(5)).T
产生df
,看起来像
0 1 2 3 4
0 0 1 2 3 4
并申请
df.where(lambda x: x>2)
我得到了
0 1 2 3 4
0 NaN NaN NaN 3 4
但是,我想得到这个:
3 4
0 3 4
省略了未满足条件的列。怎么办呢?
答案 0 :(得分:3)
IIUC您可以致电dropna
传递axis=1
以删除包含任何NaN
值的列:
In [272]:
df[df > 2].dropna(axis=1)
Out[272]:
3 4
0 3 4
答案 1 :(得分:0)
如果列值大于2,则可以删除列名称小于3的列,如果列名称为整数。
print(df.drop(df[df.columns[df.columns < 3]] > 2, 1))
输出:
3 4
0 3 4