【问题标题】:Extract a specific value in dataframe column name and row index在数据框列名和行索引中提取特定值
【发布时间】:2022-01-20 11:22:40
【问题描述】:

我有一个形状为 (5, 7) 的数据框。列索引和行索引分别从 0~6 和 0~4 命名。此数据框(矩阵)仅包含 5、7、8 和 9 等四个值。

但是有 6 七值 6 八值 7 九个值 和 16 个五个值。

谁能推荐一个可以提取数字七 (7)、列值和行值的代码??

例如, 第一个七(2, 1)-->(列名,行索引) 第二七(2、2)

并为八分之一和九分之类的做这个。

import numpy as np
import pandas as pd

arr = np.array([[5,7,7,8,8,9,5],
               [5,5,8,9,8,5,7],
               [5,5,7,9,9,5,5],
               [5,5,5,9,8,7,5],
               [5,9,9,8,7,5,5]])

df = pd.DataFrame(arr)

【问题讨论】:

  • 为什么是 12,50 ?前7个不应该是(0,1)吗?第 0 行,第 1 列?
  • 对不起。我已经编辑了问题。
  • 输出会是什么样子

标签: python arrays pandas dataframe


【解决方案1】:

使用np.where

np.where(arr==7)
Out[64]: 
(array([0, 0, 1, 2, 3, 4], dtype=int64),
 array([1, 2, 6, 2, 5, 4], dtype=int64))

使用zip更改为您的格式

a = np.where(arr==7)
list(zip(a[0],a[1]))
Out[69]: [(0, 1), (0, 2), (1, 6), (2, 2), (3, 5), (4, 4)]

【讨论】:

  • 非常感谢,它工作得非常完美。但是,此代码可以应用于数据框吗?而不是 numpy 数组?
  • 我的意思是我们可以更改代码,以便显示它们的标签而不是列和行索引的数量。例如:[(54.22, 30.92), (55.17, 31.22)],数字是度数,是行和列的标签。
【解决方案2】:

使用两个循环

arr = np.array([[5,7,7,8,8,9,5],
               [5,5,8,9,8,5,7],
               [5,5,7,9,9,5,5],
               [5,5,5,9,8,7,5],
               [5,9,9,8,7,5,5]])

def find_7(arr):
    for i in range(len(arr)):
        for j in range(len(arr[i])):
            if arr[i][j] == 7:
                print("row={row}, col={col}".format(row=i,col=j))

print(find_7(arr))

输出

row=0, col=1
row=0, col=2
row=1, col=6
row=2, col=2
row=3, col=5
row=4, col=4

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多