панды применяют значение списка из одного столбца в другой

#python #pandas

#python #pandas

Вопрос:

У меня есть этот df:

      description.    lineItem
0.                   [{'description': 'invoice4}]
1                    [{'description': 'invoice3}]
2                    [{'description': 'invoice2}]
3.    "invoice1"
 

Я пытаюсь обновить столбец ‘description’, чтобы он принимал значение из dict в массиве LineItem, чтобы оно выглядело как:

      description.    lineItem
0.    'invoice4'    [{'description': 'invoice4}]
1     'invoice3'    [{'description': 'invoice3}]
2     'invoice2'    [{'description': 'invoice2}]
3.    'invoice1'
 

Я перепробовал все виды средств доступа к массивам и dict, но, похоже, тип LineItem <class 'list'> .

 def get_description(lineItem):
    lineItem.str[0]['description]


df.loc[df["description"] == '','description'] = df['lineItems'].apply(getDescription)
 

результат `AttributeError: объект ‘list’ не имеет атрибута ‘str’

Как я могу получить доступ к значению списка LineItem?

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

1. lineItem.[0]['description'] ?

Ответ №1:

Как насчет чего-то подобного ниже

 import pandas as pd

df = pd.DataFrame([[None,[{'description': 'invoice4'}]],[None,[{'description': 'invoice3'}]],[None,[{'description': 'invoice2'}]],["invoice1",""]
],columns=["description","lineItem"])

df['description'] = df['description'].fillna(df['lineItem'].str[0].str['description'])
print(df)
 

Вывод:

     description                   lineItem
0    invoice4  [{'description': 'invoice4'}]
1    invoice3  [{'description': 'invoice3'}]
2    invoice2  [{'description': 'invoice2'}]
3    invoice1