Как перенести значения из строки в другую строку с условием

#python #pandas #dataframe #jupyter-notebook

#python #pandas #фрейм данных #jupyter-ноутбук

Вопрос:

Это мой простой фрейм данных

     Name    balans  overdue  loan
0   Branch1  125      2500   4200
1   Branch1  154      500    8500
2   Branch2  125      600    2300
3   Branch3  154      433    5600
4   Branch3  130      0      5000   
5   Branch4  152      630    9800
6   Branch4  129      123    6500
7   Branch5  130      0      1235
7   Branch5  152      75     1897
 

Я пытаюсь найти решение этой проблемы, если столбец баланса равен 154, затем удалите просроченное значение из этой строки и добавьте к просроченному, где балансы равны 125 в той же ветке, если в одной ветке несколько 125, затем добавьте его в first come или с помощью random, это просто должно бытьв той же ветке. То же, что и с другими значениями баланса, например 154->125, 152 -> 130.

Я не знаю, как это решить. Не могли бы вы мне помочь, пожалуйста. Любая помощь будет оценена. Спасибо!

Ответ №1:

Может быть, это может сработать?

 def func(group):
  map = {154:125, 152:130}
  values = {}
  for k,v in map.items():
    q = group.query(f'balans=={v}')
    if len(q):
      values[k] = q.iloc[0].overdue
  return group.apply(lambda x: x.overdue if x.balans not in values else values[x.balans], axis=1)

df.loc[:,'overdue'] = df.group_by('Name').apply(func).values