熊猫数据框:按出现次数划分列条目

时间:2020-02-13 14:31:20

标签: pandas dataframe division

我的问题:

我有这个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']})

我该如何简单地做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

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

请注意,我已经假设“共享”列的值是浮动的,如您在上面看到的。