筛选多列Pandas

2024-10-01 15:49:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方法,将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个列都能工作?


Tags: theto数据方法indataframepandasdf
2条回答

可以使用^{}关键字传递对列表:

def filter_df(df, *args):
    for k, v in args:
        df = df[df[k] == v]
    return df

它可以这样使用:

^{pr2}$

注意

理论上,您可以使用**kwargs,这将有一个更令人愉快的用法:

filter_df(df, a=1, b=2)

但是,您只能将它用于名称为有效Python标识符的列。在

编辑

请参见@Goyo下面的评论,以获得更好的实现点。在

你可以用下面的方法

filtered_df = df[(df[column1]=='foo') & (df[column2]=='bar')]

您可以继续使用&和parentesis语句。在

相关问题 更多 >

    热门问题