熊猫value_counts()+重量

时间:2019-12-18 16:07:01

标签: python pandas pandas-groupby

我有一个这样的Pandas数据框:

df = pd.DataFrame({'id': [121, 34324, 111, 12, 45, 232],
              'weight': [10, 2, 80, 49, 71, 18],
              'var_bool': [True, True, False, True, False, True],
              'var_cat': ['red', 'blue', 'red', 'green', 'green', 'blue']})

df['var_bool'] = df['var_bool'].astype('bool')
df['var_cat'] = df['var_cat'].astype(pd.api.types.CategoricalDtype())

我想应用一个函数来计算唯一标签的出现频率,其权重由“ weight”列指定:

df['var_bool'].value_counts() #I need to consider the weight of each row
df['var_cat'].value_counts() #I need to consider the weight of each row

该功能必须同时适用于“ var_bool”和“ var_cat”,可能需要使用快速引擎(数据帧很大)。非常感谢!

编辑:结果应为:

#for "var_bool"
True 79
False 151

#for "var_cat"
red 90
blue 20
green 120

1 个答案:

答案 0 :(得分:1)

如果没有groupby,我认为这是无法完成的。

df.groupby('var_bool')['weight'].sum()