#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