I have this dataframe df
:
name class 1 Bob history 2 Chuck math 3 Daren history 4 Elisa english 5 Aaron history 6 Tom math 7 Dan history 8 Fred english
I want to create two new columns at once which are simply the character length of the existing two columns. The result should look like this:
name class name_len class_len 1 Bob history 3 7 2 Chuck math 5 4 3 Daren history 5 7 4 Elisa art 5 3 5 Aaron history 5 7 6 Tom math 3 4 7 Dan history 3 7 8 Fred business 4 8
I’ve tried to use for comprehension to generate the lists at once, such as so:
df[["1", "2"]] = [df[name].apply(len) for name in posts.columns]
but I get
ValueError: Columns must be same length as key
I would like to do more complex operations and create lots of new columns from pre-existing columns as such, and do not want to manually create each new column one at a time. Any help is appreciated!
Advertisement
Answer
No need to use apply
, .str.len()
should work:
for col in df.columns: df[f"{col}_len"] = df[col].str.len() df name class name_len class_len 1 Bob history 3 7 2 Chuck math 5 4 3 Daren history 5 7 4 Elisa english 5 7 5 Aaron history 5 7 6 Tom math 3 4 7 Dan history 3 7 8 Fred english 4 7