0

Say I have this dataframe

import pandas as pd
df = pd.DataFrame({'Verbatim': ['Pants', 'Shirts', 'Shirts', 'Pants', 'Shoes', 'Shoes', 'Shoes', 'Shoes', 'Dresses, Shoes, Dresses', 'Pants', 'Pants', 'Shirts', 'Dresses Pants Shoes', 'Shoes Pants', 'Pants', 'Pants', 'Dresses', 'Pants', 'Pants', 'Dresses']})

Through various steps, I determine that all of my unique words in the above are

unique_words = ('Pants', 'Shirts', 'Shoes', 'Dresses')

I now want to add columns to my Data Frame that denote the presence of each Unique word in the "verbatim" column. I am creating dummies from verbatim text. So, if a respondent noted "Dresses" in their response, they would get a 1 in the Dresses column.

How do I use a loop/apply statement to automate this? I would like to do something like this

for word in unique_words:
    df['word'] = 0
    df.loc[df['Verbatim'].str.contains("word"), 'word'] = 1

Essentially, I want to know how to use the iterator ('word') to create a column in a dataframe named after the same as that iterator. How do I reference the iterator in the loop? This code works manually, but I can't figure out how to loop it.

Thanks!

1 Answer 1

1

You can use the apply function:

for word in unique_words:
    df[word] = df.apply(lambda x: word in x["Verbatim"], axis=1)

print(df.head()

The output is:

  Verbatim  Pants  Shirts  Shoes  Dresses
0    Pants   True   False  False    False
1   Shirts  False    True  False    False
2   Shirts  False    True  False    False
3    Pants   True   False  False    False
4    Shoes  False   False   True    False

If you don't like the type you can put 0s and 1s like this:

for word in unique_words:
    df[word] = df.apply(lambda x: 1 if word in x["Verbatim"] else 0, axis=1)

print(df.head())

Resulting in:

  Verbatim  Pants  Shirts  Shoes  Dresses
0    Pants      1       0      0        0
1   Shirts      0       1      0        0
2   Shirts      0       1      0        0
3    Pants      1       0      0        0
4    Shoes      0       0      1        0
Sign up to request clarification or add additional context in comments.

1 Comment

Goodness gracious you are my hero for this. That worked THANK YOU.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.