Python “按和转换”(';计数';)会产生放置错误-在较小的数据集上可以正常工作

Python “按和转换”(';计数';)会产生放置错误-在较小的数据集上可以正常工作,python,pandas,Python,Pandas,熊猫中真正简单的任务是抛出一个我不理解的错误。使用这样一个简单的数据集: test=pd.DataFrame([[1,3],[1,6],[2,4],[3,9],[3,2]],columns=['a','b']) 我可以执行以下命令来计算一个值在测试的“a”列中出现的次数 test['count']=test.groupby('a').transform('count') 这将产生: >>> test a b count 0 1 3 2

熊猫中真正简单的任务是抛出一个我不理解的错误。使用这样一个简单的数据集:

test=pd.DataFrame([[1,3],[1,6],[2,4],[3,9],[3,2]],columns=['a','b'])
我可以执行以下命令来计算一个值在测试的“a”列中出现的次数

test['count']=test.groupby('a').transform('count')
这将产生:

>>> test
       a  b  count
    0  1  3      2
    1  1  6      2
    2  2  4      1
    3  3  9      2
    4  3  2      2
太好了。但根据我的真实数据,这是行不通的。下面是我的一小段数据,用于重现问题:

newtest=pd.DataFrame([['010010201001000','001','0220','AL','0'],['010010201001001','001','0220','AL','0'],['010010201001002','001','0220','AL','0'],['010010201001003','001','0160','AL','0'],['010010201001004','001','0160','AL','0']],columns=['BlockID','CountyFP','District','state_x','HD'])
newtest['blocks']=newtest.groupby(['CountyFP','District','state_x']).transform('count')
尝试这样做会产生以下错误:

ValueError: Wrong number of items passed 2, placement implies 1
我真的不明白是什么让我的“真实”示例与播放集有任何不同,谷歌搜索这个错误会产生其他错误示例,但我仍然不清楚为什么会在这里产生


更令人困惑的是,如果我只执行上面代码的右侧,它工作得很好-生成每列都有计数的newtest。这就好像是分配给它带来了问题。

您没有选择任何列对其执行聚合,因此它对剩余的2列执行聚合,如果您选择其中一列,则会得到所需的结果:

In [6]:
newtest['blocks'] = newtest.groupby(['CountyFP','District','state_x'])['BlockID'].transform('count')
newtest

Out[6]:
           BlockID CountyFP District state_x HD  blocks
0  010010201001000      001     0220      AL  0       3
1  010010201001001      001     0220      AL  0       3
2  010010201001002      001     0220      AL  0       3
3  010010201001003      001     0160      AL  0       2
4  010010201001004      001     0160      AL  0       2
您尝试的输出:

In [9]:
newtest.groupby(['CountyFP','District','state_x']).transform('count')

Out[9]:
   BlockID  HD
0        3   3
1        3   3
2        3   3
3        2   2
4        2   2

您可以看到,它生成了2列,因为这是剩余的列,因此出现了您观察到的错误消息。

我认为它与此相关,无法将2和2放在一起。谢谢