python 基于多列添加value_counts列

hc8w905p  于 2023-02-21  发布在  Python
关注(0)|答案(3)|浏览(89)

基本上,这个问题等于1770927029791785,不同之处在于,我希望基于多列而不是一列来计算值。
我举个例子

column1 column2 column3 column4 
1   a       2       True    asdmn
2   b       2       False   asdd
3   c       3       False   asddas
4   a       2       False   grtgv
5   b       1       False   bdfbf

结果应该是

column1 column2 column3 column4  counts
1   a       2       True    asdmn    2
2   b       2       False   asdd     1
3   a       3       False   asddas   1
4   a       2       False   grtgv    2
5   b       1       False   bdfbf    1

如果我没有弄错的话,以前参考问题的回答都不适用于这种情况。

fsi0uk1n

fsi0uk1n1#

您可以:

df['counts'] = df.groupby(['column1','column2'])['column1'].transform('size')
jgwigjjp

jgwigjjp2#

首先是对here中的几个列进行值计数,以确定哪些响应是有用的。基本上,我尝试了两种方法:
counts = df.value_counts(['column1', 'column2']).reset_index(name='counts')
然后我使用merged,如下所示:

counts = df.value_counts(['column1', 'column2']).reset_index(name='counts')
duplicated_sats.merge(counts, on=['column1', 'column2'])
pjngdqdw

pjngdqdw3#

使用value_counts,您可以:

cols = ["column1", "column2"]
df = df.assign(counts=df.set_index(cols).index.map(df[cols].value_counts()))

print(df)

  column1  column2  column3 column4 counts
1       a        2     True   asdmn      2
2       b        2    False    asdd      1
3       c        3    False  asddas      1
4       a        2    False   grtgv      2
5       b        1    False   bdfbf      1

相关问题