Преобразование нескольких столбцов фрейма данных в одну серию - PullRequest
1 голос
/ 10 октября 2019

У меня есть набор данных df (250,3) 250 строк и три столбца. Я хочу написать цикл, который объединяет содержимое каждого столбца в моем фрейме данных, чтобы иметь одну серию (250,1) из 250 строк и 1 столбца 'df_single'. Ручная операция выглядит следующим образом:

df_single = df ['color'] + "" + df ['model'] + "" + df ['size']

Как я могусоздать df_single с циклом for или не вручную?

Я пытался написать этот код с помощью TypeError

df_conc=[]
for var in cols:
    cat_list=df_code_part[var]
    df_conc = df_conc+" "+cat_list

TypeError: можно только объединить список (не "str") в список

Ответы [ 3 ]

1 голос
/ 10 октября 2019

Я думаю, что если вам нужно объединить 3 столбца, тогда ваше решение действительно хорошо:

df_single = df['colour']+" "+df['model']+" "+df['size']

Если вам нужно общее решение для многих столбцов, используйте DataFrame.astype для преобразования в строки, если необходимо сDataFrame.add для добавления пробелов, sum для объединения и последнего удаления пробельных чисел путем Series.str.rstrip для удаления пробельных пробелов:

cols = ['color','model','size']
df_single = df[cols].astype(str).add(' ').sum(axis=1).str.rstrip()

Или:

df_single = df[cols].astype(str).apply(' '.join, axis=1)
1 голос
/ 10 октября 2019

Если вы хотите иметь пробелы между столбцами, запустите:

df.apply(' '.join, axis=1)

"Обычный" df.sum (axis = 1) объединяет все столбцы, но без пробелов между ними.

1 голос
/ 10 октября 2019

, если вы хотите получить сумму. Вам нужно использовать:

df_single=df.astype(str).add(' ').sum(axis=1).str.rstrip()

, если вы не хотите добавлять все столбцы, вам нужно предварительно выбрать их:

columns=['colour','model','size']
df_single=df[columns].astype(str).add(' ').sum(axis=1).str.rstrip()
...