Объединение нескольких столбцов в один список столбцов с комбинацией [ключ: значение] в Python

Вопрос: Позвольте мне предисловие к этому вопросу, отметив, что комбинированный столбец не является словарем. Результирующий фреймворк имеет квадратные скобки внутри "комбинированного" столбца, поэтому он отображается как список в формате dataframe внутри него [key1: value1, key2: value2 и т.д.]. Я пытаюсь преобразовать свой dataframe из этого: import pandas as pd test = pd.DataFrame({'apples':['red','green','yellow'], 'quantity': [1,2,3],'tasteFactor':['yum','yum','yuck']}) apples

Вопрос:

Позвольте мне предисловие к этому вопросу, отметив, что комбинированный столбец не является словарем. Результирующий фреймворк имеет квадратные скобки внутри “комбинированного” столбца, поэтому он отображается как список в формате dataframe внутри него [key1: value1, key2: value2 и т.д.].

Я пытаюсь преобразовать свой dataframe из этого:

import pandas as pd test = pd.DataFrame({‘apples’:[‘red’,’green’,’yellow’], ‘quantity’: [1,2,3],’tasteFactor’:[‘yum’,’yum’,’yuck’]}) apples quantity tasteFactor 0 red 1 yum 1 green 2 yum 2 yellow 3 yuck

В этот формат, который объединяет ключи со значениями в каждой строке в новый столбец:

apples quantity tasteFactor combined 0 red 1 yum [‘apples’:’red’,’quantity’:’1′,’tastefactor’:’yum’] 1 green 2 yum [‘apples’:’green’,’quantity’:’2′,’tastefactor’:’yum’] 2 yellow 3 yuck [‘apples’:’yellow’,’quantity’:’3′,’tastefactor’:’yuck’]

Пытался превратить dataframe в словарь на строку, но застрял в преобразовании в список.

test[‘combined’] = test.to_dict(orient=’records’)

Полученный новый столбец не обязательно должен быть фактическим типом списка. Это может быть строка.

Ранее задал этот вопрос здесь, но хотел уточнить вопрос в названии в этом вопросе. Как создать список из словаря в DataFrame в Python

Нашли следующие тесно связанные вопросы и попробовали их вывод, который получает меня наполовину, но, похоже, не может точно соответствовать правильному формату.

  • Объединить столбцы в Pandas DataFrame с столбцом списков в DataFrame
  • Объединить значения нескольких столбцов в один столбец в python pandas
  • Преобразование DataFrame в словарь со значениями в списке
  • Как создать словарь ключа: column_name и значение: уникальные значения в столбце в python из фрейма данных

Лучший ответ:

Вы можете сделать это с помощью метода apply для pandas dataframes

import pandas as pd df = pd.DataFrame({‘apples’:[‘red’,’green’,’yellow’], ‘quantity’: [1,2,3],’tasteFactor’:[‘yum’,’yum’,’yuck’]}) col_names = df.columns def func(row): global col_names list_ = [str(b)+’:’+str(a) for a,b in zip(row,col_names.values.tolist())] return list_ x = list(map(func, df.values.tolist())) df.loc[:,’combined’] = pd.Series(x) # df # apples quantity tasteFactor combined # 0 red 1 yum [apples:red, quantity:1, tasteFactor:yum] # 1 green 2 yum [apples:green, quantity:2, tasteFactor:yum] # 2 yellow 3 yuck [apples:yellow, quantity:3, tasteFactor:yuck] Ответ №1

Как вы упомянули В результате новый столбец не должен быть фактическим типом списка.

di=test.T.to_dict() test[‘Mapper’]=test.index test.Mapper.map(di) test.assign(combined=test.Mapper.map(di)).drop(‘Mapper’,1) Out[493]: apples quantity tasteFactor combined 0 red 1 yum {‘apples’: ‘red’, ‘quantity’: 1, ‘tasteFactor’… 1 green 2 yum {‘apples’: ‘green’, ‘quantity’: 2, ‘tasteFacto… 2 yellow 3 yuck {‘apples’: ‘yellow’, ‘quantity’: 3, ‘tasteFact…

РЕДАКТИРОВАТЬ:

di=test.T.to_dict() test[‘Mapper’]=test.index test.Mapper.map(di) test=test.assign(combined=test.Mapper.map(di).astype(str)).drop(‘Mapper’,1) test=test.combined.str.replace(‘{‘,'[‘).str.replace(‘}’,’]’) test.combined[0] Out[511]: «[‘apples’: ‘red’, ‘quantity’: 1, ‘tasteFactor’: ‘yum’]»

Оцените статью
Добавить комментарий