按Sex分组填充Age列NaN值时遇长度匹配错误,如何解决?
问题解决:按Sex分组填充Age列NaN值的错误修正
错误原因
你遇到的ValueError: Columns must be same length as key是因为:
- 原代码
df.groupby('Sex').transform(...)会对整个DataFrame的所有列执行transform操作,返回的是与原DataFrame结构一致的多列结果 - 而你试图将这个多列结果赋值给单个列
df['Age'],两者维度不匹配,因此报错
修正后的代码
方法一:指定分组后仅处理Age列
直接针对Age列做分组和填充操作,返回的结果是与原列长度一致的Series:
df['Age'] = df.groupby('Sex')['Age'].transform(lambda x: x.fillna(x.mean()))
方法二:更简洁的fillna写法
利用fillna直接接收分组计算的均值结果,逻辑更清晰:
df['Age'] = df['Age'].fillna(df.groupby('Sex')['Age'].transform('mean'))
两种方法都能实现你的需求:按Sex分组计算各组平均年龄,并用该均值填充对应组内Age列的NaN值。
内容的提问来源于stack exchange,提问作者sunhem
相关产品推荐
相关产品推荐

