首页 > 解决方案 > Pandas 计算一列中的值,而另一列保持不变

问题描述

我正在尝试计算一列中的所有值,而另一列保持不变..这里有一个真正的大脑放屁。下面是一个例子,因为我知道这个措辞读起来有点奇怪。

数据:

a | item1
a | item2
a | item3
a | item4
b | item1
b | item3
c | item4

我想要达到的目标:

a | item1 | 4
a | item2 | 4 
a | item3 | 4
a | item4 | 4
b | item1 | 2
b | item3 | 2
c | item4 | 1

我尝试了几种不同的方法来做到这一点,但最终还是得到了一些非常奇怪的计数。此外,我的最终目标是将这些数据全部合并到一个 Excel 表中。我目前有一张相当大的表格,里面有一堆列,但我不知道如何计算这个数。

话虽这么说,因为它已经在 excel 中并且最终目标是 excel,所以我也可以在那里找到解决方案。只是认为 Pandas 可能比编写某种 excel 函数更快、更容易。

标签: pythonexcelpandas

解决方案


您可以groupby()使用transform

df['col_3'] = df.groupby('col_1')['col_2'].transform('count')

输出:

  col_1 col_2   col_3
0     a     1       4
1     a     2       4
2     a     3       4
3     a     4       4
4     b     1       2
5     b     3       2
6     c     4       1

示例数据:

df = pd.DataFrame({'col_1':['a','a','a','a','b','b','c'],
                   'col_2':[1,2,3,4,1,3,4]})

推荐阅读