2016-04-06 3 views
1

Вместо того, чтобы использовать имя объекта dataframe, я вызываю метод on, есть ли сокращенное имя для него? Например, предположим, что я хочу сделать что-то вродеДоступ к объекту DataFrame в вызове метода DataFrame

long_data_frame_name.long_column_name.fillna(long_data_frame_name.long_column_name.mean()) 

я хотел бы быть в состоянии сократить это во что-то вроде

long_data_frame_name.long_column_name.fillna(self.mean()) 

Само не работает (я пробовал :)) , Я думаю, что в R plyr есть ., который делает то, что я прошу.

Редактировать: Просто чтобы быть ясным Я знаю, что могу назначить свою длинную переменную переменную другой переменной, но я надеялся избежать загромождения пространства имен временными переменными.

ответ

1

Нет, но вы можете создать короткую ссылку заранее. Например:

ldfn = long_data_frame_name.long_column_name 

, а затем сделать:

ldfn.fillna(ldfn.mean(), inplace=True) 

inplace=True требуется, так как в противном случае .fillna возвращает новый объект DataFrame, а не обновления, который вы предоставляете.

Вот полный пример. Во-первых, мы создали демо DataFrame с отсутствующим значением:

import numpy as np 
import pandas as pd 

df = pd.DataFrame(np.ones((5,5)), columns=['aa','bb','cc','dd','ee']) 
df.iloc[2,2] = np.nan 
df 

    aa bb cc dd ee 
0 1.0 1.0 1.0 1.0 1.0 
1 1.0 1.0 1.0 1.0 1.0 
2 1.0 1.0 NaN 1.0 1.0 
3 1.0 1.0 1.0 1.0 1.0 
4 1.0 1.0 1.0 1.0 1.0 

Далее мы заполняем, используя inplace=True, и посмотреть, заливку, нанесенный на оригинальной DataFrame объекта df:

dflc = df.cc 
dflc.fillna(dflc.mean(), inplace=True) 
df 

    aa bb cc dd ee 
0 1.0 1.0 1.0 1.0 1.0 
1 1.0 1.0 1.0 1.0 1.0 
2 1.0 1.0 1.0 1.0 1.0 
3 1.0 1.0 1.0 1.0 1.0 
4 1.0 1.0 1.0 1.0 1.0  
+0

Я ценю ваш ответ, но я Думаю, это не соответствует моему вопросу. Я знаю, что могу назначить свою длинную переменную переменным другой переменной, но я надеялся избежать загромождения пространства имен временными переменными. – Ben

+1

Тогда ответ просто «Нет». :) – mfitzp

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