创建新列时遇到错误

时间:2019-07-18 05:33:05

标签: python pandas

原始数据框:

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_beerid出现次数。如果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

2 个答案:

答案 0 :(得分:0)

这是解决方案。

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

答案 1 :(得分:-1)

假设编辑中的模式是正确的, 尝试

  

df ['beer_beerid']。value_counts()

共享CSV文件的图片,只是为了让我可以确定,因为我现在不确定是beerid还是_beerid。

LINK

it('should set customer name on calling function "saveCustomerName()"', () => {
   spyOn(component.customerService,'getCustomerName').and.returnValue('testName');
   spyOn(component.customerService,'saveCustomerName').and.returnValue(of('saved'));
   component.showSpinner = true;
   component.saveCustomerName();
   expect(component.customerService.getCustomerName).toHaveBeenCalled();
   expect(component.customerService.saveCustomerName).toHaveBeenCalledWith('testName);
   expect(component.showSpinner).toBeFalsy();
});

编辑:

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

LINK

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

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

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