簡體   English   中英

過濾器 pandas df by boolean 系列

[英]Filter pandas df by boolean series

我有一個 dataframe foo和一個真/假系列bar

foo = pd.DataFrame(
    [['a', 1], ['b', 2], ['a', 3]],
    index=[0, 1, 2], columns=['col1', 'col2'])
bar = pd.Series({'a': True, 'b': False})

我想根據bar的真實性過濾col1上的foo 以下是一些有效的方法:

foo[foo['col1'].isin(bar.where(bar == True).dropna().index)
foo[foo['col1'].isin([k for k, v in bar.to_dict().items() if v])

# desired result
    col1    col2
0   a       1
2   a       3

但是,我認為這兩種方法都有點混亂/閱讀起來不太直觀,想知道我是否遺漏了任何基本的 Pandas 過濾概念,這些概念允許使用更簡單的方法。

使用Series.map並索引結果:

foo[foo.col1.map(bar)]

   col1  col2
0    a     1
2    a     3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM