groupby 转换的长度不匹配错误

length mismatch error for groupby transform

我想用支付相同票价的人中出现频率最高的年龄来填充年龄列中的缺失值。但看起来好像该过程创建了一个额外的索引,因此长度未匹配错误。有谁知道解决这个问题的方法吗?

concated_df['Age'] = concated_df.groupby('Fare')['Age'].transform(lambda x: x.fillna(x.mode()))

这是完整的错误消息- ValueError: Length mismatch: Expected axis has 1308 elements, new values have 1309 elements

试试这个:

# remove null values from the variable used for grouping 
concated_df= concated_df[concated_df['Fare'].notna()]

concated_df['Age'] = concated_df.groupby('Fare')['Age'].transform(lambda x: x.fillna(x.mode()))

计算每组的众数然后填写NaN

transform_mode = concated_df.groupby('Fare')['Age'].transform(lambda x: x.mode().iloc[0])
concated_df['Age'] = concated_df['Age'].fillna(transform_mode)