简体   繁体   中英

What is the `pandas` way to create a column in a dataframe by operating on each row?

I have an apply function that operates on each row in my dataframe. The result of that apply function is a new value. This new value is intended to go in a new column for that row.

So, after applying this function to all of the rows in the dataframe, there will be an entirely new column in that dataframe.

How do I do this in pandas ?

Two ways primarily:

df['new_column'] = df.apply(my_fxn, axis=1)

or

df = df.assign(new_column=df.apply(my_fxn, axis=1))

If you need to use other arguments, you can pass them to the apply function, but sometimes it's easier (for me) to just use a lambda:

df['new_column'] = df.apply(lambda row: my_fxn(row, global_dict), axis=1)

Additionally, if your function can operate on arrays in a vectorized fashion, you could just do:

df['new_column'] = my_fxn(df['col1'], df['col2'])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM