我只想选择那些值不同于'Nan'和0的索引
创建数据帧
df = pd.DataFrame({'A':[np.nan,3,0,2],
'B':[0,1,1,2]})
df = np.asarray(df)
不幸的是,下面的代码不起作用
df[np.nonzero(df) & ~np.isnan(df)]
预期成果
array(3,1,1,2,2)
有谁知道它有什么问题?
按numpy.ravel
将值转换为 1d 数组,然后对于非0
值,按!= 0
比较:
a = np.ravel(df.to_numpy())
a = a[(a != 0) & ~np.isnan(a)]
print (a)
[3. 1. 1. 2. 2.]
就像@sammywemmy提到的,谢谢,这里np.ravel
不是必需的:
a = df.to_numpy()
a = a[(a != 0) & ~np.isnan(a)]
print (a)
[3. 1. 1. 2. 2.]
你不能按numpy.nonzero
进行比较,因为它返回索引而不是掩码:
返回非零元素的索引。