python - 获取符合某些条件的 Pandas DataFrame 的列和行索引对

标签 python pandas dataframe

假设我有一个如下所示的 Pandas DataFrame。这些值基于距离矩阵。

A = pd.DataFrame([(1.0,0.8,0.6708203932499369,0.6761234037828132,0.7302967433402214),
                  (0.8,1.0,0.6708203932499369,0.8451542547285166,0.9128709291752769),
        (0.6708203932499369,0.6708203932499369,1.0,0.5669467095138409,0.6123724356957946),
        (0.6761234037828132,0.8451542547285166,0.5669467095138409,1.0,0.9258200997725514),
        (0.7302967433402214,0.9128709291752769,0.6123724356957946,0.9258200997725514,1.0)
                  ])

输出:

Out[65]: 
          0         1         2         3         4
0  1.000000  0.800000  0.670820  0.676123  0.730297
1  0.800000  1.000000  0.670820  0.845154  0.912871
2  0.670820  0.670820  1.000000  0.566947  0.612372
3  0.676123  0.845154  0.566947  1.000000  0.925820
4  0.730297  0.912871  0.612372  0.925820  1.000000

我只想要上三角。

c2 = A.copy()
c2.values[np.tril_indices_from(c2)] = np.nan

输出:

Out[67]: 

        0    1        2         3         4
    0 NaN  0.8  0.67082  0.676123  0.730297
    1 NaN  NaN  0.67082  0.845154  0.912871
    2 NaN  NaN      NaN  0.566947  0.612372
    3 NaN  NaN      NaN       NaN  0.925820
    4 NaN  NaN      NaN       NaN       NaN

现在我想根据某些条件获取列和行索引对。 例如:获取值大于 0.8 的列和行索引。为此,输出应为 [1,3]、[1,4]、[3,4]。有什么帮助吗?

最佳答案

您可以使用 numpy 的 argwhere :

In [11]: np.argwhere(c2 > 0.8)
Out[11]: 
array([[1, 3],
       [1, 4],
       [3, 4]])

要获取索引/列(而不是它们的整数位置),您可以使用列表理解:

[(c2.index[i], c2.columns[j]) for i, j in np.argwhere(c2 > 0.8)]

关于python - 获取符合某些条件的 Pandas DataFrame 的列和行索引对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22190120/

相关文章:

python - 格式化文件功能在不应该写入的情况下写入了不必要的 ","

python - urlerror 和 ssl.CertificateError

Python 将单元格中的多个值拆分为多行

python - 如何在 pandas 的 groupby 之后访问 MultiIndex 列?

python - 如何在 Dataframe 中保存排序顺序?

python - 基于最左索引对多索引数据框中的列应用相关数学运算

python - 如何在没有空行的python中在csv文件中写入元组

python - 如何将每月数据转换为每周数据并保持其他列不变

python - 迭代使用 "locals": Python 生成的多个数据帧

python - 对于 df 中的每个唯一时间戳,制作数据框中所有行的向量(Python)