使用具有布尔值的另一个数据框过滤数据框值

时间:2021-03-19 08:34:40

标签: python python-3.x pandas dataframe numpy

我正在处理多个数据框。每个数据框包含尺寸为 67 行 x 215 列的数字数据。为了从每个数据框中选择数据,还有一个具有相同维度并包含布尔值的数据框。 我无法检索满足真实条件的单元格值。示例代码如下。

    import pandas as pd
    import numpy as np
    
    #initialize a dataframe
    df = pd.DataFrame(
        [[21, 72, 67.1],
        [23, 78, 69.5],
        [32, 74, 56.6],
        [52, 54, 76.2]],
        columns=['a', 'b', 'c'])
print('DataFrame\n----------\n', df)
print('\nDataFrame datatypes :\n', df.dtypes)

#convert pandas dataframe to numpy array

    arr = df.to_numpy()
    
    print('\nNumpy Array\n----------\n', arr)
    print('\nNumpy Array Datatype :', arr.dtype)
    k = np.random.randint(250,275,(4,3))
    print(k)
    kt = pd.DataFrame(k)
    print(kt)
    kb = kt>260
    print(kb)
    km = kb.to_numpy()
    print(km)
    xt = arr(km)
    print(xt)

我衷心感谢您花时间解决问题。 谢谢。

1 个答案:

答案 0 :(得分:0)

您正在调用名为 arr 的数组(因为它是 numpy.ndarray 并且它不是一个函数,因此您无法调用它)而不是在其中传递您的布尔掩码“km”。所以,

而不是使用:-

xt = arr(km)

使用:-

xt = arr[km]

现在如果你打印 xt 你会得到:-

array([21. , 23. , 56.6, 52. , 54. ])