python - Конкатенация строк внутри pandas groupby - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть этот фрейм данных:

df = pd.DataFrame({'A': {0: '1',  1: '2',  2: '4',  3: '7',  4: '7'},
 'B': {0: 'S', 1: 'S', 2: 'D', 3: 'D', 4: 'S'},
 'C': {0: 'XX',  1: 'WX',  2: 'WX',  3: 'XX',  4: 'XW'},
 'Location': {0: '32',  1: '63',  2: '32',  3: '42',  4: '42'}})

enter image description here

И я создал эту функцию:

def Transformation(df_, col_names):
    # function code (irrelevant for the problem statement)
    df_.groupby([col_names,"Location"]) # the line problem
    # function code (irrelevant for the problem statement)
    return df_ # (irrelevant for the problem statement)

Transformation(z, ["A", "B"]) # How you call the function. col_names has to be more than 1.

# the line problem выше: Как я могу объединить col_names с "Location" в аргументе groupby ? Можно предположить, что dimensions всегда задается в виде списка строк с несколькими элементами, например:

Transformation(df, ["A", "B"])
Transformation(df, ["C", "A"])
Transformation(df, ["A", "B", "C", "D"]) # You can assume that the whole abecedary is in the columns of `df` and you can combine them as you wish, but for minimal example purposes I think two is enough

"Location" не может go внутри аргументов dimensions (для функции), если вы сделаете это, функция выдаст ошибку. Итак, предположим, что "Location" никогда не входит во входные аргументы, а добавляется где-то в коде функции, и когда я добавляю "Location", я сталкиваюсь с проблемой.

Один из Подходы, которые я использовал, и я не понимаю, почему не работает:

df_.groupby(col_names.append("Location"))

Что привело меня к:

x = ["A","B", "C"]
x_aux = x.append("Location")
x_aux # gives "None"

НО!:

x = ["A","B", "C"]
x.append("Location")
x # gives ["A","B", "C", "Location"]

Почему это случается? Любые предложения по объединению внутри функции groupby ?

1 Ответ

2 голосов
/ 22 апреля 2020

вы можете поместить Location в список и использовать "+" для объединения списков.

df_.groupby(col_names+["Location"])
...