【问题标题】:Filter data frame values using another data frame with boolean values使用另一个具有布尔值的数据框过滤数据框值
【发布时间】:2021-03-19 08:34:40
【问题描述】:

我正在处理多个数据框。每个数据框都包含尺寸为 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)

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

【问题讨论】:

  • 预期输出是什么?
  • df = pd.DataFrame( [[21, 72, 67.1], [23, 78, 69.5], [32, 74, 56.6], [52, 54, 76.2]], columns= ['a', 'b', 'c']) 如果上面是数据框:假设掩码是: mask = pd.DataFrame( [[True, False, True], [True, False, False], [False , True, False], [False, True, True]], columns=['a', 'b', 'c']) 预期输出如下: output = [21, 67.1, 23, 74, 54 , 76.2]
  • 好的,那么需要另一个答案。

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


【解决方案1】:

您正在调用名为 arr 的数组(因为它是 numpy.ndarray 并且它不是函数,因此您不能调用它)而不是在 it.so 中传递您的布尔掩码“km”,

而不是使用:-

xt = arr(km)

使用:-

xt = arr[km]

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2017-02-12
    • 2020-10-27
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多