Pandas Dataframe: делить записи в столбцах по количеству вхождений - PullRequest
0 голосов
/ 13 февраля 2020

Моя проблема:

У меня есть этот 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 Ответ

1 голос
/ 13 февраля 2020

Вы можете попробовать что-то вроде этого:

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' должно быть плавающим, как вы могли видеть выше.

...