Преобразовать строку в число с плавающей точкой для нескольких столбцов в фрейме данных - PullRequest
0 голосов
/ 12 февраля 2019

Я играю с набором данных из FIFA 19 и в настоящее время пытаюсь преобразовать строковые значения, условия заработной платы и деблокирования в значения с плавающей запятой, например, 110,5 млн евро в 110500000. Вот моя функция, которая принимает текст в качестве аргумента и возвращает значение с плавающей запятой:

def text_to_num(text):
    d = {'K': 3, 'M': 6, 'B': 9}
    new_text = text[1:]
    if new_text[-1] in d:
        num = new_text[:-1]
        magnitude = new_text[-1]
        return Decimal(num) * 10 ** d[magnitude]
    else:
        return Decimal(new_text)

Довольно просто применить его к одному столбцу, например, значение:

def convert_into_float(data):
    data['Value'] = data['Value'].apply(text_to_num)
    return data

Мне интересно, как преобразовать все 3 столбца одновременно вместо использования вышеуказанной функции три раза,

def main():
    # load the data from .csv file, use ID column as index  
    new_data = load_data("data.csv", 'ID') 
    new_data = convert_into_float(new_data)

1 Ответ

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

Вы можете использовать DataFrame.applymap с отфильтрованными столбцами по списку:

def convert_into_float(data):
    cols = ['col1','col2','col3']
    data[cols] = data[cols].applymap(text_to_num)
    return data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...