如何过滤 pandas DataFrame 并保留特定元素?

How to filter a pandas DataFrame and keep specific elements?

我有一个 pandas 数据框,它是一个 50x50 的相关矩阵。在下面的图片中你可以看到我的例子

我想做的是,如果可能的话,当然是制作一个新的数据框,它只包含旧数据框高于 0.5 或低于 -0.5 的元素,表明具有很强的线性关系,但不是 1,以避免方差部分。

我不认为我问的是完全可能的,因为当然变量 x0 不会具有与 x1 等相同的强关系,所以新数据框看起来不会很好。

但是有没有什么方法可以快速扫描这个数据框,找到我提到的值,也许至少将它们插入一个数组中?

任何见解都会有所帮助。谢谢

如果你想删除太低的相关对,你就不能真正查看相关矩阵。您可以做的一件事是堆叠框架并保留相关的相关对。

有(以随机生成为例):

          0         1         2         3         4
0  0.038142 -0.881054 -0.718265 -0.037968 -0.587288
1  0.587694 -0.135326 -0.529463 -0.508112 -0.160751
2 -0.528640 -0.434885 -0.679416 -0.455866  0.077580
3  0.158409  0.827085  0.018871 -0.478428  0.129545
4  0.825489 -0.000416  0.682744  0.794137  0.694887

你可以这样做:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.uniform(-1, 1, (5, 5)))
df = df.stack()
df = df[((df > 0.5) | (df < -0.5)) & (df != 1)]


0  1   -0.881054
   2   -0.718265
   4   -0.587288
1  0    0.587694
   2   -0.529463
   3   -0.508112
2  0   -0.528640
   2   -0.679416
3  1    0.827085
4  0    0.825489
   2    0.682744
   3    0.794137
   4    0.694887