#python #pandas #list
#python #панды #Список
Вопрос:
У меня есть следующий DF (с жестко заданным желаемым результатом)
dfo = pd.DataFrame({"list1": [["test1", "test2"], ["test1", "test2", "test3"], ["test1", "test2"]],
"list2": [["notatest", "test3"], ["notatest"], ["notatest", "Test3"]],
"desired": [["test1", "test2", "test3"], ["test1", "test2", "test3"], ["test1", "test2", "Test3"]]})
В котором я хочу добавить / добавить самый последний элемент list2
( list2[-1]
) в list1
if it == «test3» .
Пробовал следующее, но безрезультатно:
dfo["list1_test3_added"] = dfo["list1"].apply(lambda x: x.append([i for i in x["list2"][-1] if i == "test3"]))
Также может быть так, что в какой-то момент кто-то теряет рассудок, и это не «test3», а «Test3», поэтому, возможно, потребуется совпадение регулярных выражений.
Комментарии:
1. Не могли бы вы добавить желаемый результат?
Ответ №1:
Проверьте последнее значение, преобразованное в нижний регистр, и, если совпадение, добавьте к одному элементу list
и последнему добавлению в исходный столбец list1
:
s = dfo["list2"].apply(lambda x: [x[-1]] if x[-1].lower() == "test3" else [])
dfo["list1_test3_added"] = dfo["list1"] s
print (dfo)
list1 list2 desired
0 [test1, test2] [notatest, test3] [test1, test2, test3]
1 [test1, test2, test3] [notatest] [test1, test2, test3]
2 [test1, test2] [notatest, Test3] [test1, test2, Test3]
list1_test3_added
0 [test1, test2, test3]
1 [test1, test2, test3]
2 [test1, test2, Test3]