侃侃无极
我猜你想用组的平均值而不是中位数填充缺失值。我们可以使用.fillna()with.groupby()和.transform()函数来通过一行代码完成此操作。首先,让我们创建包含所需列的 DataFrame。# Create a DataFramedf = pd.DataFrame({'user':['1','1','1','1','1','1', '2', '2', '2', '2', '2'], 'ffq':[1, 3, 2, np.nan, 3, np.nan, 3, np.nan, 2, np.nan, 3], 'food-category':['fruit', 'fruit', 'vegetables', 'vegetables', 'vegetables', 'fruit', 'fruit', 'fruit', 'vegetables', 'vegetables', 'fruit']})我们现在可以使用所需的插补方法填充缺失值,例如均值、中位数或众数。下面的插补是用平均值完成的,以获得问题中提到的结果。# Apply fillna function within each groupdf['ffq'] = df.groupby(['user', 'food-category']).transform(lambda x: x.fillna(x.mean())) user ffq food-category0 1 1.0 fruit1 1 3.0 fruit2 1 2.0 vegetables3 1 2.5 vegetables4 1 3.0 vegetables5 1 2.0 fruit6 2 3.0 fruit7 2 3.0 fruit8 2 2.0 vegetables9 2 2.0 vegetables10 2 3.0 fruit该.transform()方法用于执行特定于组的计算,在这个例子中是平均值,它返回一个类似索引的对象。有关详细信息,请参阅用户指南。