gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:48 25 4
gpt4 key购买 nike

我有一个包含 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 中的一列。因此,这意味着如果 chrstartend 列中的两行具有相同的值,则 counts 列在两行中均为 2,但它们不会折叠为一行。这里是否有一个我缺少的简单解决方案,或者我需要一起破解一些东西吗?

最佳答案

您可以使用 .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 结果中选择一个任意列,然后只需执行以下操作:

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

关于python - 是否可以在不折叠 Pandas DataFrame 的情况下获得 groupby 样式计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49019320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com