В вычислительном отношении эффективно преобразовать dtypes нескольких столбцов DataFrame в один единственный dtype одновременно - PullRequest
0 голосов
/ 13 октября 2018

функция выглядит следующим образом:

def func1(df):
    df = df.loc[:,['code',
                  'currentPrice',
                  'hedgingValue',
                  'exercisePrice',
                  'outstanding(%)',
                  'expiryDate'
                  ]].dropna()

    df['code'] = df['code'].str[:5]
    df['currentPrice'] = df['currentPrice'].astype(float)
    df['hedgingValue'] = df['hedgingValue'].astype(float)
    df['exercisePrice'] = (df['exercisePrice'].str.replace(',','')).astype(int)
    df['outstanding(%)'] = (df['outstanding(%)'].str[:-1]).astype(float)
    df['expiryDate'] = df['expiryDate'].astype(int)

    return df

две строки, которые преобразуют df ['currentPrice'] и df ['hedgingValue'] из строки в float, настолько неэффективны, что если 100 столбцоввместо двух?Таким образом, должен быть способ конвертировать несколько столбцов (скажем, их 100) в число с плавающей запятой, используя только однострочный код.Мой вопрос в том, что это за волшебный однострочный код?Спасибо, ребята заранее.

Обратите внимание, что df.apply () общеизвестно медленен и неэффективен при обработке большого DataFrame, поэтому он определенно не является подходящим решением для этой ситуации.

1 Ответ

0 голосов
/ 14 октября 2018

IIUC, вы хотите выполнить несколько преобразований в одну строку.Это можно сделать с помощью

cols = ['col1', 'col2', 'col3', ...]
df[cols] = df[cols].astype(float)
...