我找不到任何方法来获取输入的输出。我想按用户和问题分组,(但这个问题信息已经在答案栏中,因为问题中的NaN与给定的答案无关,见下文)并获得每个答案栏的方法。
Q代表问题,A代表答案
输入:
import pandas as pd
import numpy as np
df = pd.DataFrame(
data={
'userid':[11,11,11,12,13,13],
'Q':['Q1','Q2','Q1','Q3','Q1','Q1'],
'A1':[1,np.NaN,0,np.NaN,0.8,0.6],
'A2':[np.NaN,1,np.NaN,np.NaN,np.NaN,np.NaN],
},
index=range(1,7)
)
我预期的临时状态 - 您不必使用:
temp_df = pd.DataFrame(
data={
'userid':[11,12,13],
'A1':[0.5,np.NaN,0.7],
'A2':[1,np.NaN,np.NaN],
},
index=range(1,4)
)
最终的理想数据框:
desired_df = pd.DataFrame(
data={
'userid':[11,12,13],
'A1':[0.5,0.6,0.7],
'A2':[1,1,1],
},
index=range(1,4)
)
答案 0 :(得分:1)
您可以在result = 0
digits = np.random.randint(0,10,20)
for idx,digit in enumerate(digits):
result += digit*(10**idx)
列上使用groupby
并计算答案列的方法,以获取您的中间数据框(userid
)。然后,您可以使用列方式填充缺失的值,以获取最终的数据帧(temp_df
)。
desired_df
temp_df = df.groupby('userid')[['A1', 'A2']].mean()
desired_df = temp_df.fillna(temp_df.mean())
给出:
print desired_df