Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add column to the end of Pandas DataFrame containing average of previous data

Tags:

I have a DataFrame ave_data that contains the following:

ave_data  Time        F7           F8            F9   00:00:00    43.005593    -56.509746    25.271271   01:00:00    55.114918    -59.173852    31.849262   02:00:00    63.990762    -64.699492    52.426017 

I want to add another column to this dataframe, containing the average of the values under column F7, F8 and F9 for each row.

The ave_data DataFrame might change size as my code reads from different Excel files later, so the method needs to be generic (i.e add the column containing the average always as the last column in the DataFrame, not in column number 4)

desired output  Time        F7           F8            F9           Average 00:00:00    43.005593    -56.509746    25.271271    4.25   01:00:00    55.114918    -59.173852    31.849262    9.26 02:00:00    63.990762    -64.699492    52.426017    17.24 
like image 669
LinnK Avatar asked Jul 29 '15 11:07

LinnK


1 Answers

You can take a copy of your df using copy() and then just call mean and pass params axis=1 and numeric_only=True so that the mean is calculated row-wise and to ignore non-numeric columns, when you do the following the column is always added at the end:

In [68]:  summary_ave_data = df.copy() summary_ave_data['average'] = summary_ave_data.mean(numeric_only=True, axis=1) summary_ave_data Out[68]:                  Time         F7         F8         F9    average 0 2015-07-29 00:00:00  43.005593 -56.509746  25.271271   3.922373 1 2015-07-29 01:00:00  55.114918 -59.173852  31.849262   9.263443 2 2015-07-29 02:00:00  63.990762 -64.699492  52.426017  17.239096 
like image 169
EdChum Avatar answered Sep 18 '22 13:09

EdChum