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)