我有一个数据框,其中包含有关几家公司董事教育背景的分类数据。目前,每家公司(由其股票代码记录)都有多个条目,每位董事一个,df 看起来像这样:Ticker EducationABC 1ABC 1ABC 5ABC 7ABC 5DEF 3DEF 4DEF 4DEF 4DEF 6我想使用 Blau 指数公式(与 Gini-Simpson 指数相同)创建一个新的数据框,每个公司只有一个条目,如下所示:Ticker Education DiversityABC 0.64DEF 0.56使用的公式是 (1 - ∑p i 2 ) 其中 p i是 i 个教育类别中每个教育类别的董事比例;例如,对于 ABC 公司,p 1 = 2/5。谁能帮我在 Python (3.7) 中实现这个?任何帮助将不胜感激!
1 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
您可以尝试实现自己的def然后使用groupby.apply. 最后,Series.reset_index回到DataFrame格式:
def blaus_index(arr):
return 1 - sum((arr.value_counts() / len(arr)) ** 2)
df.groupby('Ticker')['Education'].apply(blaus_index).reset_index(name='Education Diversity')
Ticker Education Diversity
0 ABC 0.64
1 DEF 0.56
添加回答
举报
0/150
提交
取消