【问题标题】:Select DataFrame data base on series value根据系列值选择 DataFrame 数据
【发布时间】:2017-05-01 02:44:07
【问题描述】:

我有一个 pandas 的 DataFrame,当我对 DataFrame 执行操作时,我得到一个系列。如何使用该系列仅选择我找到匹配项的记录?

现在我正在将该列附加到 DataFrame 上并对数据框进行查询,然后删除该列。不过我真的不喜欢这个解决方案,所以我希望我能得到更好的解决方案。

data = [[1,2,3], [1,3,4], [3,4,5]]
columns = ['a', 'b', 'c']
df = pd.DataFrame(data, columns=columns)
series = df.myoperation()
df['myoperation'] = series
res = df[df['myoperation'] == True] 
del res['myoperation']

series 对象将产生 1-1 匹配,因此索引项 1 将匹配数据框对象中的项 1。

上面是我完成它的 hacky 代码,但我担心当数据框有很多列或比这个简单的例子更多的数据时,它会很慢。

谢谢

【问题讨论】:

    标签: python pandas indexing boolean series


    【解决方案1】:

    我认为如果series 是布尔值Seriesdf 相同的索引和与df 相同的长度,我认为你可以使用 - 它被称为boolean indexing

    series = pd.Series([True, False, True], index=df.index)
    res = df[series]
    print (res)
       a  b  c
    0  1  2  3
    2  3  4  5
    

    它始终适用于boolean 列表和 numpy 数组,只有长度必须与 df 相同:

    L = [True, False, True]
    res = df[L]
    print (res)
       a  b  c
    0  1  2  3
    2  3  4  5
    

    arr = np.array([True, False, True])
    res = df[arr]
    print (res)
       a  b  c
    0  1  2  3
    2  3  4  5
    

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 1970-01-01
      • 2013-06-08
      相关资源
      最近更新 更多