Создать новый столбец на основе значений в других столбцах - PullRequest
0 голосов
/ 19 февраля 2019

Я играю с набором данных FIFA 19, в котором есть столбец «Рабочая норма», в котором хранятся показатели работы атакующих и защищающих игроков, например («Средняя / Средняя»).Я хотел бы создать две дополнительные колонки (прямо рядом с оригинальной), которые могли бы хранить эти функции отдельно;давайте назовем их «Аттестация рабочей силы», «Защита рабочей скорости».Я не могу найти лучший способ сделать это, я думал о применении простой функции разделения, но она возвращает ValueError.

def split_work_rate(text, work_type):
    while not pd.isnull(text):
        new_text = text.split('/')
        if work_type == 'Attacking':
            work_rate_attacking = new_text[0]
            return work_rate_attacking
        else:
            work_rate_defending = new_text[1]
            return work_rate_defending


def create_new_work_rates(data):
    cols = ['Work Rate']
    data['Work Rate Attacking'] = data[cols].apply(split_work_rate, args=('Attacking',))
    data['Work Rate Defending'] = data[cols].apply(split_work_rate, args=('Defending',))
    return data

ValueError: ('Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). ',' произошло с индексом Work Rate ')

1 Ответ

0 голосов
/ 19 февраля 2019

Во-первых, проблема в следующей строке:

if work_type == 'Attacking':

Что вы, вероятно, подумали, когда писали, что pandas будет сравнивать значение в каждой строке с 'Attacking' и уменьшать значениеветвь.

Однако, фактически, pandas применяет такие сравнения к целому Series сразу.Следовательно, результатом сравнения с 'Attacking' является не одно логическое значение, а другое Series.Не существует однозначного способа превратить Series логических значений в одно логическое значение, поэтому тест if не работает.

В любом случае, это, вероятно, не лучший способсделай это.Попробуйте это:

data[['Work Rate Attacking', 'Work Rate Defending']] = data['Work Rate'].str.split('/', expand=True)

При этом используется аксессор str, чтобы разбить Series на DataFrame, который затем можно назначить двум нужным столбцам.

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