[英]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.