2015-11-04 1 views
0

У меня есть dataframe, df и определите функцию, которая будет применяться ко всему кадру данных, используя applymap.pandas applymap внутри функции без копии

def f(x): 
    return x*2 

def master(df): 
     return df.applymap(f) 

if __name__ == "__main__": 
    d = {'a':1, 'b':2} 
    df = pd.DataFrame(d.items()) 
    df_2 = master(df) 

Есть ли способ использовать applymap на df внутри функции master без того, чтобы сделать копию?

I'm думать что-то на линии

def f(x): 
    return x*2 

def master(df): 
     df.applymap(f) 

if __name__ == "__main__": 
    d = {'a':1, 'b':2} 
    df = pd.DataFrame(d.items()) 
    master(df) 

и на основной ФР изменился бы.

EDIT f функция является более сложной, что это один, конечно же, и я хочу, чтобы применить последовательность функций для преобразования кадра данных. Есть в основном синтаксические анализаторы для нормализации, преобразования в unicode, удаления символов, разделения на компоненты и т. Д., Поэтому до сих пор я не вижу способа сделать это без applymap.

+0

Не можете ли вы просто вернуть df.applymap (f) 'непосредственно в' master'? – EdChum

+0

Что значит «без копирования»? Вы меняете значения dataframe (это 'x * 2', которые сделают копию) – joris

+0

Я думаю о возможности изменения df, не возвращая его на master. – Ivan

ответ

0

Вы можете глобальный df. Таким образом, вы можете получить его в любом месте, и вы можете изменить его в любом месте. Кто. Функция довольно бесполезна из-за этого. global df

+0

Да, глобальные переменные на самом деле не являются опцией. – Ivan

Смежные вопросы