在 Numpy 中,使用 where
将为您提供原始数组的子集。例如,
import numpy as np
np.where(np.arange(5)>2)[0]
将返回array([3, 4])
。我想对 Pandas 做类似的事情。但是,如果我像这样定义一个类似的 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
省略不满足条件的列。如何做到这一点?
最佳答案
IIUC 您可以调用 dropna
传递 axis=1
来删除包含任何 NaN
值的列:
In [272]:
df[df > 2].dropna(axis=1)
Out[272]:
3 4
0 3 4
关于python - 在 Pandas 中,当使用 "where"选择时,删除不满足条件的列,而不是用 NaN 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38656930/