我有一个函数,该函数旨在在对要定义的某些行进行过滤之后,沿着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
,但没有用)。
答案 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()