如何在Pandas中基于多列添加value_counts统计列?
基于多列统计DataFrame分组次数的解决方案
你的需求是根据多列(示例中为column1和column2)统计每组的出现频次,并将该频次作为新列添加回原DataFrame。可以用Pandas的groupby结合transform方法实现,无需额外合并操作,直接在原数据上生成结果。
示例代码
假设你的DataFrame名为df,执行以下代码:
import pandas as pd # 构造示例DataFrame data = { 'column1': ['a', 'b', 'c', 'a', 'b'], 'column2': [2, 2, 3, 2, 1], 'column3': [True, False, False, False, False], 'column4': ['asdmn', 'asdd', 'asddas', 'grtgv', 'bdfbf'] } df = pd.DataFrame(data, index=[1,2,3,4,5]) # 按指定多列分组,统计每组次数并添加为新列 df['counts'] = df.groupby(['column1', 'column2'])['column1'].transform('count') 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
说明
groupby(['column1', 'column2']):指定需要用来分组统计的多列,你可以根据实际需求修改列名列表。transform('count'):对每个分组执行计数操作,并且将结果按原DataFrame的索引对齐,直接填充到对应行的新列中,这一步保证了原数据的行顺序和结构不变。
如果需要基于其他多列组合统计,只需修改groupby中的列名列表即可,比如要按column1、column2、column3三列统计,就改成groupby(['column1', 'column2', 'column3'])。
内容的提问来源于stack exchange,提问作者J Agustin Barrachina
相关产品推荐
相关产品推荐

