是否可以在不折叠Pandas数据帧的情况下获得groupby样式计数?

2024-04-25 17:57:44 发布

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

我有一个包含9列的DataFrame,我正试图添加一列基于前3列的唯一值计数(例如,列a、B和C必须匹配才能作为唯一值计数,但其余列可能会有所不同。我试着用groupby来做这个:

df = pd.DataFrame(resultsFile500.groupby(['chr','start','end']).size().reset_index().rename(columns={0:'count'}))

这将返回一个包含5列的DataFrame,计数是我想要的。但是,我还需要原始数据帧中的值,所以我一直在尝试以某种方式将这些计数值作为原始df中的一列。因此,这意味着,如果列chrstart和{}中的两行具有相同的值,counts列在这两行中都是2,但不会折叠成一行。这里有没有一个简单的解决方案,或者我需要一起破解一些东西?在


Tags: columnsdataframedfsizeindexstartendpd
1条回答
网友
1楼 · 发布于 2024-04-25 17:57:44

可以使用.transform获得非折叠行为:

>>> df
   a  b  c  d  e
0  3  4  1  3  0
1  3  1  4  3  0
2  4  3  3  2  1
3  3  4  1  4  0
4  0  4  3  3  2
5  1  2  0  4  1
6  3  1  4  2  1
7  0  4  3  4  0
8  1  3  0  1  1
9  3  4  1  2  1
>>> df.groupby(['a','b','c']).transform('count')
   d  e
0  3  3
1  2  2
2  1  1
3  3  3
4  2  2
5  1  1
6  2  2
7  2  2
8  1  1
9  3  3
>>>

注意,我必须从.transform结果中选择一个任意列,但是只需执行以下操作:

^{pr2}$

相关问题 更多 >