Если условие истинно для l oop других строк - PullRequest
0 голосов
/ 05 февраля 2020

Я должен проверить, имеет ли статус «Да» в столбце «Bad_loan», если true, проверить другие имена в «client_name», если у клиента есть другие кредиты, установить значение «Да» для всех своих кредитов

def bad_loan(df):
    for row in df:
        status = row['bad_loan']
        name = row['name_client']
        if status == 'Yes':
            for n in df:
                name_client = df['name_client']
                if name == name_client:
                    df['bad_loan'] = 'Yes'
                else:
                    df['bad_loan'] = 'No'

bad_loan(df)

возвращает TypeError: строковые индексы должны быть целыми числами

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020
import numpy as np
import pandas as pd

#make a list of all the names with bad loans:

names = df[df["bad_loan"]=="Yes"]["name_client"]

#set bad loan to yes if name in list

df["bad_loan"] = np.where(df["name_client"].isin(names),"Yes","No")
0 голосов
/ 05 февраля 2020
for row in df:

Вы не можете повторить этот путь с pandas

Попробуйте ilo c вот так

def bad_loan(df):
    for i in range(len(df)):
        row = df.iloc[i]
        status = row['bad_loan']
        name = row['name_client']
        if status == 'Yes':
            for n in df:
                name_client = df['name_client']
                if name == name_client:
                    df['bad_loan'] = 'Yes'
                else:
                    df['bad_loan'] = 'No'

bad_loan(df)
...