Pandas Dataframe:按出现次数划分列条目

Pandas Dataframe: Divide Column entries by number of occurence

我的问题:

我有这个 DF:

df_problem = pd.DataFrame({"Share":['5%','6%','9%','9%', '9%'],"level_1":[0,0,1,2,3], 'BO':['Nestle', 'Procter', 'Nestle', 'Tesla', 'Jeff']})

问题是,这9%居然被三个股东瓜分了。所以我想给他们每个人 3% 的份额,并记在他们的名下。它应该看起来像这样:

df_solution = pd.DataFrame({"Share":['5%','6%','3%','3%', '3%'],"level_1":[0,0,0,1,2], 'BO': ['Nestle', 'Procter', 'Nestle', 'Tesla', 'Jeff']})

如何以简单的方式做到这一点?

您可以尝试这样的操作:

f_problem['Share'] = (f_problem['Share'].str.replace('%', '').astype(float) / 
                      f_problem.groupby('Share')['BO'].
                      transform('count')).astype(str) + '%'

>>> f_problem
      Share     level_1       BO
   0  5.0%        0       Nestle
   1  6.0%        0       Procter
   2  3.0%        1       Nestle
   3  3.0%        2       Tesla
   4  3.0%        3       Jeff

请注意,如上所示,我假设列 'Share' 的值为浮点数。