我想知道,如果给定一个布尔掩码,是否有一种方法可以检索位于掩码中 True 值对应位置的DataFrame的所有元素。
在我的例子中,我有一个包含某个数据集的值的DataFrame,例如,让我们以下面的例子为例:
l = [[5, 3, 1],
[0, 3, 1],
[7, 3, 0],
[8, 5, 23],
[40, 4, 30],
[2, 6, 13]]
df_true = pd.DataFrame(l, columns=['1', '2', '3'])
df_true
然后,我随机地将一些值替换为“np.nan”,如下所示:
l2 = [[5, 3, np.nan],
[np.nan, 3, 1],
[7, np.nan, 0],
[np.nan, 5, 23],
[40, 4, np.nan],
[2, np.nan, 13]]
df_nan= pd.DataFrame(l2, columns=['1', '2', '3'])
df_nan
假设在应用一些插补算法后,我得到了如下结果:
l3 = [[5, 3, 1],
[2, 3, 1],
[7, 8, 0],
[8, 5, 23],
[40, 4, 25],
[2, 6, 13]]
df_imp= pd.DataFrame(l3, columns=['1', '2', '3'])
df_imp
现在,我想创建两个列表(或数组),一个包含 * 插补 * 值,另一个包含 * 真 * 值,以便比较它们。为此,我首先创建了一个掩码m = df_nan.isnull()
,它的值为 * 真 *,对应于包含插补值的单元格。通过将掩码应用为df_imp[m]
,我得到:
有没有一种方法可以只得到值而不加上 Nan,并将它们放入列表中?
1条答案
按热度按时间lmvvr0a81#
可以使用
df.values
返回DataFrame的numpy表示形式,然后使用numpy.isnan
并保留其他值。