【问题标题】:length mismatch error for groupby transformgroupby 变换的长度不匹配错误
【发布时间】:2021-02-16 10:15:19
【问题描述】:

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

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

【问题讨论】:

  • 尝试将 x.mode() 替换为 x.mode().iloc[0]
  • 感谢@sulkeh,但它仍然返回错误。

标签: python dataframe pandas-groupby valueerror


【解决方案1】:

试试这个:

# 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()))

【讨论】:

    【解决方案2】:

    计算每个组的模式,然后填写NaN

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

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 2021-05-19
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多