【问题标题】:Facing an Error while creating a new column创建新列时遇到错误
【发布时间】:2019-11-26 23:41:59
【问题描述】:

原始数据框:

df.head()
>
     beer_beerid    review_profilename    review_overall
0     48215          stcules                   3.0
1     52159          oline73                   3.0
2     52159          alpinebryant              3.0
3     52159          rawthar                   4.0
4     52159          RangerClegg               3.5

需要在此数据框中创建一个包含 beer_beeid 出现次数的新列。如果 beerid 52159 出现 4 次 - 那么该 beerid 的新列值应该是 4。

使用以下代码:

df['beer_review_count'] = df.groupby('beer_beerid').transform('count')

它给出了以下错误

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

【问题讨论】:

  • 你想要在结果数据框中关于“beer_review_count”列的输出,我的意思是每个单元格在这一行中包含的内容
  • 检查输出,行数可能不一样......或数据类型 - 它应该是列表或系列

标签: python pandas


【解决方案1】:

这是解决方案。

df['beer_review_count'] = df.groupby('beer_beerid')['beer_beerid'].transform('count')

使用 transform()

可以正常工作
beer_beerid   profilename  overall  beer_review_count
0  48215       stcules      3.0                  1
1  52159       oline73      3.0                  4
2  52159  alpinebryant      3.0                  4
3  52159       rawthar      4.0                  4
4  52159   RangerClegg      3.5                  4

【讨论】:

    【解决方案2】:

    假设编辑中的架构是正确的, 试试

    df['beer_beerid'].value_counts()

    分享 CSV 文件的图片,以便我可以确定,因为我现在不确定它是 beerid 还是 _beerid。

    LINK

    df.groupby('beer_beerid')['beer_beerid'].count()
    

    编辑:

    可能修复 NaN 错误,与其他解决方案不同,这应该避免冗余:值的重复。

    LINK

    根据我所做的输出应该是这样的。

    
    beer_beerid
    48215       1 
    52159       4
    
    

    This 有助于将列添加到现有数据框中。

    【讨论】:

    • 它的“beer_beerid”
    猜你喜欢
    • 2021-12-01
    • 2020-02-09
    • 2016-02-11
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多