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

时间:2018-02-27 22:59:05

标签: python pandas dataframe pandas-groupby

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

1 个答案:

答案 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