[FIXED] Ermitteln Sie das Mindestalter des Befragten für jede Frage

Ausgabe

gegeben df einen Datenrahmen, der die Antworten auf einen Fragebogen enthält

import pandas as pd
import numpy as np
df = pd.DataFrame(data=[[10,np.nan,'Answer 1','Answer 2'],
                        [40,"Answer 4","Answer 3",'Answer 2'],
                        [20,"Answer 2", np.nan,'Answer 1']], 
                        columns = ['Age','Question 1','Question 2', 'Question 3'])


df

    Age Question 1  Question 2  Question 3
0   10  NaN         Answer 1    Answer 2
1   40  Answer 4    Answer 3    Answer 2
2   20  Answer 2    NaN         Answer 1

Ich möchte einen zweiten Datenrahmen erstellen, der für jede Frage das Mindestalter des Befragten enthält

Haftungsausschluss: sehr hässlicher Code voraus!

df2 = pd.DataFrame(data=df.columns.tolist(),columns=["Questions"])
for col in df2["Questions"]:
    if col != "Age":
        df2.loc[df2["Questions"]==col,"min_age"] = df.loc[:,["Age",col]].dropna()["Age"].min()

df2

    Question    min_age
0   Age         NaN
1   Question 1  20.0
2   Question 2  10.0
3   Question 3  10.0

Lösung

Den Index des ersten Nicht-NAN-Werts finden Sie mit Age als geordnetem Index:

df2 = df.set_index('Age').sort_index().notna()
out = df2.idxmax().where(df2.any())

Ausgang:

Question 1    20
Question 2    10
Question 3    10
dtype: int64


Beantwortet von –
mozway


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like