【发布时间】:2023-01-09 14:46:49
【问题描述】:
给 df 一个包含问卷答案的数据框
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
我想为每个问题创建第二个数据框,其中包含受访者的最低年龄
免责声明:前面的代码非常丑陋!
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
【问题讨论】:
-
那么,问题是什么?你已经得到了答案。
-
df.sort_values('Age').set_index('Age').isna().idxmin()