簡體   English   中英

熊貓數據幀過濾器正則表達式

[英]pandas DataFrame filter regex

我不明白pandas DataFrame filter

設置

import pandas as pd

df = pd.DataFrame(
    [
        ['Hello', 'World'],
        ['Just', 'Wanted'],
        ['To', 'Say'],
        ['I\'m', 'Tired']
    ]
)

問題

df.filter([0], regex=r'(Hel|Just)', axis=0)

我希望[0]將第一列指定為要查看的列,並且axis=0指定過濾行。 我得到的是這樣的:

       0      1
0  Hello  World

我期待

       0       1
0  Hello   World
1   Just  Wanted

問題

  • 什么會讓我達到我的預期?

根據文檔

參數是互斥的,但這不會被檢查

因此,看起來,第一個可選參數items=[0]勝過第三個可選參數regex=r'(Hel|Just)'

In [194]: df.filter([0], regex=r'(Hel|Just)', axis=0)
Out[194]: 
       0      1
0  Hello  World

相當於

In [201]: df.filter([0], axis=0)
Out[201]: 
       0      1
0  Hello  World

這只是沿着 0 軸選擇索引值在[0]行。


要獲得所需的結果,您可以使用str.contains創建一個布爾掩碼,並使用df.loc來選擇行:

In [210]: df.loc[df.iloc[:,0].str.contains(r'(Hel|Just)')]
Out[210]: 
       0       1
0  Hello   World
1   Just  Wanted

這應該有效:

df[df[0].str.contains('(Hel|Just)', regex=True)]

這是一個鏈接方法:

df.loc[lambda x: x['column_name'].str.contains(regex_patern, regex = True)]

暫無
暫無

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

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