reality stilts
reality stilts

Reputation: 95

Create new column in DataFrame from a conditional of a list

I have a DataFrame like:

df = pd.DataFrame({'A' : (1,2,3), 'B': ([0,1],[3,4],[6,0])})

I want to create a new column called test that displays a 1 if a 0 exists within each list in column B. The results hopefully would look like:

df = pd.DataFrame({'A' : (1,2,3), 'B': ([0,1],[3,4],[6,0]), 'test': (1,0,1)})

With a dataframe that contains strings rather than lists I have created additional columns from the string values using the following

df.loc[df['B'].str.contains(0),'test']=1

When I try this with the example df, I generate a

TypeError: first argument must be string or compiled pattern

I also tried to convert the list to a string but only retained the first integer in the list. I suspect that I need something else to access the elements within the list but don't know how to do it. Any suggestions?

Upvotes: 1

Views: 900

Answers (1)

elPastor
elPastor

Reputation: 8996

This should do it for you:

df['test'] = pd.np.where(df['B'].apply(lambda x: 0 in x), 1, 0)

Upvotes: 1

Related Questions