选择Python熊猫中的所有行

时间:2019-12-22 14:12:43

标签: python pandas filter

我有一个函数,该函数旨在在对要定义的某些行进行过滤之后,沿着sum pandas的列打印DataFrame;且该数量所占的百分比在相同的总和中没有任何过滤器:

def my_function(df, filter_to_apply, col):
    my_sum = np.sum(df[filter_to_apply][col])
    print(my_sum)
    print(my_sum/np.sum(df[col]))

现在,我想知道是否有一种方法可以使filter_to_apply实际上不执行任何过滤器(即保留所有行),以继续使用我的函数(实际上更加复杂和方便) ),即使我不需要任何过滤器。

因此,某些filter_f1可以做到:df[filter_f1] = df,并且可以与其他过滤器一起使用:filter_f1 & filter_f2

一个可能的答案是:df.index.isin(df.index),但我想知道是否还有更容易理解的内容(例如,我尝试仅使用True,但没有用)。

2 个答案:

答案 0 :(得分:1)

这是选择所有行的一种方式:

df[range(0, len(df))]

这也是

df[:]

但是我还没有找到将:作为参数传递的方法。

答案 1 :(得分:0)

熊猫上有一个名为loc的函数,用于过滤行。您可以执行以下操作:

df2 = df.loc[<Filter here>]

#Filter can be something like df['price']>500 or df['name'] == 'Brian'
#basically something that for each row returns a boolean

total = df2['ColumnToSum'].sum()