Maximum of Series' means with panda

47
April 18, 2018, at 07:56 AM

I've been searching for a while now and I can't figure out how to do that in other way than hardcoding it. In a csv file, I have to obtain the maximum value of the mean of three series, and then return the NAME of that series, which is the part causing me troubles.

comp = max(DataTD['Cycle (seconds)'].mean(), DataTD['Run (seconds)'].mean(), DataTD['Swim (seconds)'].mean())
if comp == DataTD['Cycle (seconds)'].mean():
    print(DataTD['Cycle (seconds)'].name)
elif comp == DataTD['Run (seconds)'].mean():
    print(DataTD['Run (seconds)'].name)
elif comp == DataTD['Swim (seconds)'].mean():
    print(DataTD['Swim (seconds)'].name)
Answer 1

Something like this should work (haven't test it):

datas = [DataTD['Cycle (seconds)'],
         DataTD['Run (seconds)'],
         DataTD['Swim (seconds)']]
means = [data.mean() for data in datas]
max_mean_idx = np.argmax(means)
print(datas[max_mean_idx].name)
Answer 2

You can get the maximum column name, then based on that grab the mean.

cols = ['Cycle (seconds)', 'Run (seconds)', 'Swim (seconds)']
max_col = max(cols, key=lambda col: DataTD[col].mean())
print('Column name: ' + max_col)
print('Mean: ' + str(DataTD[max_col].mean()))
Answer 3

Data From Pir

DataTD.loc[DataTD[cols].mean(1).sort_values().iloc[[-1]].index]
Out[625]: 
   Cycle (seconds)  Run (seconds)  Swim (seconds)
J                7              5               9
Answer 4

Consider the sample data

cols = ['Cycle (seconds)', 'Run (seconds)', 'Swim (seconds)']
np.random.seed([3, 1415])
DataTD = pd.DataFrame(
    np.random.randint(10, size=(10, 3)),
    list('ABCDEFGHIJ'), cols
)
   Cycle (seconds)  Run (seconds)  Swim (seconds)
A                0              2               7
B                3              8               7
C                0              6               8
D                6              0               2
E                0              4               9
F                7              3               2
G                4              3               3
H                6              7               7
I                4              5               3
J                7              5               9

IIUC:

Use mean with argument axis=1 followed with an idxmax to find the index for the maximal value.

DataTD.loc[[DataTD[cols].mean(1).idxmax()]]
   Cycle (seconds)  Run (seconds)  Swim (seconds)
J                7              5               9

Otherwise, try

means = DataTD.mean()
means[[means.idxmax()]]
Swim (seconds)    5.7
dtype: float64
READ ALSO
converting spacy token vectors into text

converting spacy token vectors into text

I am using spacy to create vectors of a sentenceIf the sentence is 'I am working', it gives me a vector of shape (3, 300)

73
Flask 405 on POST even when POST is present

Flask 405 on POST even when POST is present

This is my code, a very simple programEven though POST is present, server is showing 405 on POST request

65
Converting Flask session to Django REST Framework session

Converting Flask session to Django REST Framework session

Converting Flask session to Django REST Framework session(How do I get a Django REST Framework session that is now in flask

60
Clause extration - Spacy

Clause extration - Spacy

Intention is to extract clauses to pandas dataframe and to excel

47