Как создать обобщенную функцию, которую можно использовать для любого столбца в наборе данных? - PullRequest
0 голосов
/ 03 июня 2019

enter image description here

def func1(dframe,Country,column_list,Role):

    dframe1 = dframe[dframe.Country == Country]          
    dframe1 = dframe1[column_list]                      
    dframe1 = dframe1[dframe1.age != 2019]
    dframe1 = dframe1[(dframe1["Role"]==Role)]           
    dframe1 = int(round(dframe1.loc[:,"age"].mean()))
    return dframe1

Я определил эту функцию, когда в первой строке извлекаются строки, в которые переданы данные столбца Страна и Страна, однако как мне это обобщить. Например, если я хочу извлечь данные из базы значений столбца Gender. Как передать аргумент, где вместо dframe.Country я могу использовать dframe. (Переданный аргумент)?

Как можно применить одну функцию очистки к нескольким столбцам в Python?

1 Ответ

0 голосов
/ 03 июня 2019

Наивным ответом на ваш вопрос будет использование operator.attrgetter, которое возвращает функцию, которую вы можете применить к df:

from operator import attrgetter

def extract_rows(df, column_name, value):
    return df[attrgetter(column_name)(df) == value]

Однако, в целом, я бы предпочел использовать синтаксис скобок для pandas, так как это делает все, что может делать точечная запись, и многое другое. Соответственно, это будет работать:

def extract_rows(df, column_name, value):
    return df[df[column_name] == value]
...