【问题标题】:ValueError: Wrong number of items passed 5, placement implies 1ValueError:错误的项目数通过 5,位置暗示 1
【发布时间】:2019-09-23 06:15:19
【问题描述】:

Click to view data sample我正在尝试用每个Item_Identifier(每个项目类型)的Item_Visibility 替换Item_Visibility 值。但是它会抛出一个错误:

ValueError: Wrong number of items passed 5, placement implies 1

data['Item_Visibilty'] = data.groupby('Item_Identifier').transform(
        lambda x: x.replace(x.mean()))

【问题讨论】:

  • 请包含一个数据(作为文本)作为示例来展示您想要实现的目标(5 行应该足够了)
  • 我已经添加了这两行的样本
  • 请不要图片,以文本形式发布示例数据(不大)。检查why
  • 另外,请添加输出的外观,以便我们进行比较。谢谢
  • @SreeramTP 您的解决方案抛出新错误:AttributeError: 'Series' object has no attribute 'todict'

标签: python pandas machine-learning data-science


【解决方案1】:

据我了解您的问题:您想将Item_Identifier 的每个唯一值的Item_Visibility 的平均值放入Item_Visibility 列。我猜Item_Identifier 在这种情况下表示一组项目,因为在其他方面将它们分组然后取平均值是没有意义的。

回答你的问题:

# sample data creation
data = pd.DataFrame(np.random.rand(4000,2),columns=['Item_Identifier','Item_Visibility'])
data.loc[:,'Item_Identifier']= data.loc[:,'Item_Identifier'].apply(
        lambda x: 'id1' if x> 0.4 else 'id2')
# creating map_table so we could map values
map_table = data.groupby('Item_Identifier').mean()
# mapping values
data.loc[:,'Item_Visibility'] = data.loc[:,'Item_Identifier'].map(
        map_table.to_dict()['Item_Visibility'])

希望有帮助!

【讨论】:

  • 这有帮助,请查看我在网上找到的答案。有没有办法让这个简单
【解决方案2】:

使用数据透视表 -

visibility_avg = data.pivot_table(values = 'Item_Visibility', index = 'Item_Identifier')
#imputing  0 values with mean visibility of products
miss_bool = data['Item_Visibility'].isnull()
data.loc[miss_bool,'Item_Visibilty'] = data.loc[miss_bool,'Item_Identifier'].apply(lambda x: visibility_avg(x))

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2020-09-17
    • 2020-07-02
    • 2019-02-25
    • 2016-02-14
    • 1970-01-01
    • 2021-12-12
    • 2021-04-08
    • 2020-01-30
    相关资源
    最近更新 更多