在多个条件下过滤数据框索引

时间:2019-11-07 15:46:58

标签: pandas filter

pandas.DataFrame.filter中,有一种方法可以使用参数“ like”或“ regex”,以便它们支持OR条件。例如:

df.filter(like='bbi', axis=1) 

将对名称为bbi的列进行过滤,但是如何过滤包含'bbi''abc'的列?

一些失败的选择:

df.filter(like='bbi' or 'abc', axis=1) 

df.filter(like=('bbi' or 'abc'), axis=1) 

3 个答案:

答案 0 :(得分:2)

不熟悉filter命令。但是您可以实现我想达到的目标:

df[(df['column'].str.contains('bbi', case=False)) | (df['column'].str.contains('abc', case=False))]

答案 1 :(得分:1)

我将执行以下操作:

设置:

df=pd.DataFrame(np.random.randint(0,20,20).reshape(5,4),
                          columns=['abcd','bcde','efgh','bbia'])
print(df)

   abcd  bcde  efgh  bbia
0    10    17     2     7
1     7    12    18     9
2    17     7    11    17
3    14     4     2     9
4    15    10    12    11

解决方案:

使用df.filter

df.filter(regex=r'(abc|bbi)')

   abcd  bbia
0    10     7
1     7     9
2    17    17
3    14     9
4    15    11

答案 2 :(得分:1)

请找到附件的屏幕截图。enter image description here[![enter image description here

正则表达式搜索速度较慢。因此,我们保留public function index() { $users = Auth::user()->cUid; $data = DB::table('personnages') ->join('comptes', 'comptes.cUid', '=','personnages.pUniqueID') ->where('pUniqueID','=' , $users) ->paginate(1); return view('home', compact('data')); }

希望这会有所帮助。谢谢

相关问题