Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

issue in writing function to filter rows data frame

I am writing a function that will serve as filter for rows that I wanted to use. The sample data frame is as follow:

df = pd.DataFrame()
df ['Xstart'] = [1,2.5,3,4,5]
df ['Xend'] = [6,8,9,10,12]
df ['Ystart'] = [0,1,2,3,4]
df ['Yend'] = [6,8,9,10,12]
df ['GW'] = [1,1,2,3,4]

def filter(data,Game_week):
    pass_data = data [(data['GW'] == Game_week)]

when I recall the function filter as follow, I got an error.

df1 = filter(df,1)

The error message is

AttributeError: 'NoneType' object has no attribute 'head'

but when I use manual filter, it works.

pass_data = df [(df['GW'] == [1])]

This is my first issue.

My second issue is that I want to filter the rows with multiple GW (1,2,3) etc.

For that I can manually do it as follow:

pass_data = df [(df['GW'] == [1])|(df['GW'] == [2])|(df['GW'] == [3])]

if I want to use in function input as list [1,2,3] how can I write it in function such that I can input a range of 1 to 3?

Could anyone please advise?

Thanks,

Zep

like image 529
Zephyr Avatar asked Dec 18 '25 17:12

Zephyr


1 Answers

Use isin for pass list of values instead scalar, also filter is existing function in python, so better is change function name:

def filter_vals(data,Game_week):
    return data[data['GW'].isin(Game_week)]

df1 = filter_vals(df,range(1,4))
like image 92
jezrael Avatar answered Dec 20 '25 09:12

jezrael



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!