Возникла проблема с добавлением в список внутри функции - PullRequest
1 голос
/ 08 марта 2019

У меня есть следующая таблица с уникальным идентификатором, фактическим и смоделированным выходом.

   Pass_ID Actual Modeled 
0    100     1      1
1    101     0      1 
2    102     1      0  
3    103     1      1

Я написал следующую функцию, чтобы я мог сгенерировать список, который в конечном итоге превратится в фрейм данных, чтобы я мог легко перезванивать строки для каждого Pass_ID, чтобы узнать, могу ли я определить, почему модельне работает для этих строк.Однако список продолжает возвращаться пустым.

new_list = []

def isolate_diff(df):
    if df['Modeled'].any() != df['Actual'].any():
        new_list.appened(df['Pass_ID'])
    else:
        pass

    return new_list

Как я могу исправить эту проблему?

Ответы [ 3 ]

1 голос
/ 08 марта 2019

Я согласен с @Prune, но чтобы решить его, я думаю, вам нужно совершенно другое решение:

print(df[df['Modeled']!=df['Actual']])

Выход:

   Pass_ID  Actual  Modeled
1      101       0        1
2      102       1        0

Если вы хотите список Pass_ID:

print(df.loc[df['Modeled']!=df['Actual'],'Pass_ID'].tolist())

Выход:

[101, 102]
0 голосов
/ 08 марта 2019

Изменить new_list.appened(df['Pass_ID']) на new_list.append(df['Pass_ID'])

Редактировать: Prune и U9 обнаружили несколько других ошибок. Это была первая неправильная вещь, которую я увидел. Пожалуйста, обратитесь к их ответам для более подробных изменений

0 голосов
/ 08 марта 2019

Вы написали глобальное условие, а не векторизованное условие:

if df['Modeled'].any() != df['Actual'].any():

Каждый член равен True, если любой элемент равен 1. Это быстро оценивается до

if True != True

, который дает вам пустую new_list.

Вместо этого напишите выражение с захватом df['Pass_ID'], отфильтровано , где df['Modeled'] != df['Actual']. Вы можете взять это оттуда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...