Эффективный способ добавить новый столбец в панде dataframe - PullRequest
0 голосов
/ 12 сентября 2018

Я знаю два способа добавления нового столбца в pandas dataframe

df_new = df.assign(new_column=default_value)

и

df[new_column] = default_value

Первый не добавляет столбцы на месте, а второй добавляет. Итак, какой из них эффективнее использовать?

Кроме этих двух, есть ли более эффективный метод, чем эти?

1 Ответ

0 голосов
/ 12 сентября 2018

Я думаю, что второй, assign используется, если вы хотите хороший код с цепочкой всех функций - один строчный код:

df = pd.DataFrame({'A':np.random.rand(10000)})

default_value = 10

In [114]: %timeit df_new = df.assign(new_column=default_value)
228 µs ± 4.26 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [115]: %timeit df['new_column'] = default_value
86.1 µs ± 654 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

Я использую perfplot для построения:

pic


import perfplot

default_value = 10

def chained(df):
    df = df.assign(new_column=default_value)
    return df

def no_chained(df):
    df['new_column'] = default_value
    return df

def make_df(n):
    df = pd.DataFrame({'A':np.random.rand(n)})
    return df

perfplot.show(
    setup=make_df,
    kernels=[chained, no_chained],
    n_range=[2**k for k in range(2, 25)],
    logx=True,
    logy=True,
    equality_check=False,
    xlabel='len(df)')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...