我有一个包含9列的DataFrame,我正在尝试根据前3列添加一列唯一值计数(例如,Col A,B和C,必须匹配才能计为唯一值,但其余列可能会有所不同。我尝试使用groupby执行此操作:
df = pd.DataFrame(resultsFile500.groupby(['chr','start','end']).size().reset_index().rename(columns={0:'count'}))
这将返回一个包含5列的DataFrame,并且计数是我想要的。但是,我还需要原始数据框中的值,所以我一直试图将某些计数值作为原始df中的列。因此,这意味着如果列chr
,start
和end
中的两行具有相同的值,则counts
列在两行中都为2,但它们不会崩溃到一排。这里有一个简单的解决方案,我缺少,或者我是否需要一起破解?
答案 0 :(得分:2)
您可以使用for
获取非崩溃行为:
.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