Сравнение нескольких столбцов в пандах .apply () - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь написать функцию .apply (), которая сравнивает столбец моего основного df и столбец отдельного df и возвращает строку.Я хочу создать новый столбец в моей основной df с помощью функции apply.Код выглядит следующим образом:

def a_by_a(row):
    if row.loc['a'] > df.groupby(['a_bins']).mean()['a'][str(row.loc['a_bins'])]:
        return "Above average"
    else:
        return "Below average"

df['a_gby_b'] = df.apply(a_by_a,axis=1)

Я пытаюсь сравнить то, что в столбце a, со средним значением, сгруппированным по a_bins, где я скопировал данные.Когда я запускаю этот код, я получаю эту ошибку:

('bin #1', 'occurred at index 0')

Однако я создал тестовую функцию для проверки [str(row.loc['a_bins'])] (где я получаю свою ошибку), которая работает:

def test(row):
    return str(row.loc['a']) + str(row.loc['bins'])
df.apply(test, axis=1)

Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 24 сентября 2019

Что мы можем сделать это с transform и np.where

df['New']=np.where(df['a']>df.groupby(['a_bins'])['a'].transform('mean'),
                   'Above average',
                   'Below average')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...