Home > Blockchain >  Arithmetic operations for groups within a dataframe
Arithmetic operations for groups within a dataframe

Time:01-02

I have loaded multiple CSV (time series) to create one dataframe. This dataframe contains data for multiple stocks. Now I want to calculate 1 month return for all the datapoints.

There 172 datapoints for each stock i.e. from index 0 to 171. The time series for next stock starts from index 0 again.

When I am trying to calculate the 1 month return its getting calculated correctly for all data points except for index 0 of new stock. Because it is taking the difference with index 171 of the previous stock.

I want the return to be calculated per stock name basis so I tried the for loop but it doesnt seem working.

e.g. In the attached image (highlighted) the 1 month return is calculated for company name ITC with SHREECEM. I expect for SHREECEM the first value of 1Mreturn should be NaN

refernce image

CodePudding user response:

Using groupby instead of a for loop you can get the result you want:

1Mreturn_function = lambda df: df['mean_price'].diff(periods=1)/df['mean_price'].shift(1)*100
gw_stocks.groupby('CompanyName').apply(1Mreturn_function)

CodePudding user response:

Aditya Vichare I am hardworking and strong working and very strong working and passionate about new work and new idea about the work

  • Related