[英]Filtering multiple columns Pandas
我有一個方法,它將熊貓數據框作為輸入:
def dfColumnFilter(df, columnFilter, columnName):
''' Returns a filtered DataFrame
Keyword arguments:
df : DataFrame in which to apply the filter
columnFilter : The list of which to filter by
columnName : The DataFrame column to apply the columnFilter to '''
for column_filter in columnFilter:
df=df[df[columnName] == column_filter]
return df
問題是我如何使這對 n 列起作用?
您可以使用*args
關鍵字來傳遞對列表:
def filter_df(df, *args):
for k, v in args:
df = df[df[k] == v]
return df
它可以像這樣使用:
df = pd.DataFrame({'a': [1, 2, 1, 1], 'b': [1, 3, 3, 3]})
>>> filter_df(df, ('a', 1), ('b', 2))
a b
2 1 3
3 1 3
筆記
理論上,您可以使用**kwargs
,它的用法更令人愉悅:
filter_df(df, a=1, b=2)
但是您只能將它用於名稱為有效 Python 標識符的列。
編輯
有關更好的實現點,請參閱@Goyo 下面的評論。
您可以使用如下
filtered_df = df[(df[column1]=='foo') & (df[column2]=='bar')]
你可以繼續&
和 parentesis 語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.