динамическое переназначение или заполнение значений по столбцам в python

#python #dictionary

Вопрос:

У меня есть фрейм данных, в котором каждый уровень в столбце » а «имеет коэффициент группировки в столбце «группа». Интересно, есть ли способ переадресации заполнения столбца «группа» на основе совпадающих значений, но без явного указания точной пары число-строка. Я могу переназначить, объединив map и combine_first, но мне интересно, есть ли более динамичный подход

Любые советы приветствуются, большое спасибо!

пары выглядят следующим образом для столбцов » а » и «группа»

  • 10 и 15 = группа 1
  • 20 = группа 3
  • 25 = группа2
 df = pd.DataFrame({ 'a': [10, 15, 20, 25, 15, 10, 20, 10, 25], 'group': ['group1', np.nan, np.nan, 'group2', 'group1', np.nan, 'group3', np.nan, np.nan]})
 

а вот переназначение с помощью созданной вручную карты

 dic = {10: "group1", 15: "group1", 20: "group3", 25: "group2"}
df.group = df.a.map(dic).combine_first(df.group)
 

Ответ №1:

Вы можете попробовать динамически создавать ряды сопоставлений:

 df["group"] = df["a"].map(df.groupby("a")["group"].first())
print(df)
 

С принтами:

     a   group
0  10  group1
1  15  group1
2  20  group3
3  25  group2
4  15  group1
5  10  group1
6  20  group3
7  10  group1
8  25  group2