Вставьте новый столбец из существующего столбца в python с помощью фреймов данных

#python #pandas #dataframe

Вопрос:

Я пытаюсь создать новый столбец на основе элементов, присутствующих в другом столбце фрейма данных. Например:

 |Sales                                      |
|------------------------------------------ |
|{id: 1, name: pen, sold: 250, profit:10}   |
|{id: 3, name: eraser, sold: 47, profit:0.8}|
|{id: 7, name: book, sold: 780, profit:85}  |
 

чтобы выглядеть как

 Sales                                       | name | sold |
--------------------------------------------|------|------|
{id: 1, name: pen, sold: 250, profit:10}    |pen   | 250  |
{id: 3, name: eraser, sold: 47, profit:0.8} |eraser| 47   |
{id: 7, name: book, sold: 780, profit:85}   |book  | 780  |
 

Комментарии:

1. каков результат type(df.loc[0,'Sales']) ?

2. это типа дикт

Ответ №1:

вы можете использовать str средство доступа:

 df['name']=df['Sales'].str['name']
df['sold']=df['Sales'].str['sold']
 

выход:

Продажи Имя продано
{id: 1, имя: ручка, продано: 250, прибыль:10} ручка 250
{идентификатор: 3, имя: ластик, продано: 47, прибыль:0,8} ластик 47
{идентификатор: 7, название: книга, продано: 780, прибыль:85} книга 780

Комментарии:

1. Спасибо за str аксессуар. Это не показывает предупреждения.

Ответ №2:

Должно сработать следующее:

 df['name'] = df['Sales'].apply(lambda x: x.get('name')
df['sold'] = df['Sales'].apply(lambda x: x.get('sold'))