#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