Dataframe is like below: Where I want to change dataframes value to ‘dead’ if age is more than 100.
JavaScript
x
7
1
import pandas as pd
2
raw_data = {'age1': [23,45,210],'age2': [10,20,150],'name': ['a','b','c']}
3
df = pd.DataFrame(raw_data, columns = ['age1','age2','name'])
4
5
raw_data = {'age1': [80,90,110],'age2': [70,120,90],'name': ['a','b','c']}
6
df2 = pd.DataFrame(raw_data, columns = ['age1','age2','name'])
7
Desired outcome
JavaScript
1
12
12
1
df=
2
age1 age2 name
3
0 23 10 a
4
1 45 20 b
5
2 dead dead c
6
7
df2=
8
age1 age2 name
9
0 80 70 a
10
1 90 dead b
11
2 dead 90 c
12
I was trying something like this:
JavaScript
1
13
13
1
col_list=['age1','age2']
2
df_list=[df,df2]
3
4
def dead(df):
5
for df in df_list:
6
if df.columns in col_list:
7
if df.columns >=100:
8
return 'dead'
9
else:
10
return df.columns
11
12
df.apply(dead)
13
Error shown: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
I am looking for a loop that works on all dataframe.
Please correct my function also for future learning :)
Advertisement
Answer
#inspired by @jib and @ravinder
JavaScript
1
8
1
col_list=['age1','age2']
2
df_list=[df,df2]
3
4
for d in df_list:
5
for c in col_list:
6
d[c]=np.where(d[c]>100,'dead',d[c])
7
df #or df2
8
output:
JavaScript
1
5
1
age1 age2 name
2
0 23 10 a
3
1 45 20 b
4
2 dead dead c
5