Pandas grouby和transform('count')在较小的数据上提供放置错误

2024-10-02 18:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

test=pd.DataFrame([[1,3],[1,6],[2,4],[3,9],[3,2]],columns=['a','b'])

我可以执行以下操作来计算某个值在test的“a”列中出现的次数。在

^{pr2}$

这就产生了:

>>> 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,每列都有计数。所以这就像是作业给它带来了问题。在


Tags: columns数据testdataframecount错误次数例子
1条回答
网友
1楼 · 发布于 2024-10-02 18:23:38

您没有选择要对其执行聚合的任何列,因此它对其余的列(共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

尝试的输出:

^{pr2}$

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

相关问题 更多 >