I’ve seen this question for R, but not for python.
Basically, I have a large DataFrame where I apply a function row-wise. It takes a very long time to run and I hoped to put a print statement to show where I am. I put together an example of what I would like to do.
I know an alternative, but I wondered if possible with apply.
So this would work fine
import pandas as pd
df = pd.DataFrame({0: [1,2,3], 1:[2,3,4], 2: [0,0,0]})
i = 0
for rows in df:
print ("Current row: {}".format(i))
df[2][i] = df[0][i] * df[1][i]
i += 1
print (df)
Output
Current row: 0
Current row: 1
Current row: 2
0 1 2
0 1 2 2
1 2 3 6
2 3 4 12
But I hoped to do something with apply such as:
def func(df):
#something here to print
return df[0] * df[1]
df[2] = df.apply(func,axis=1)
Many thanks.
Advertisement
Answer
I guess you can write your function like this:
def func(df):
print(f'Current row: {df.name}')
return df[0] * df[1]
The usage is following:
>>> df[2] = df.apply(func, axis=1) Current row: 0 Current row: 1 Current row: 2