Мне нужно перебрать фрейм данных, содержащий список строк, и вернуть столбец в зависимости от порядка элементов в этом списке.

Я хотел бы пройти через столбец «FRUIT» в фрейме данных ниже и вывести логическое значение в другом столбце, называемом «STATUS», на основе порядка значений в столбце «FRUIT». Всякий раз, когда строка «PINE» располагается перед словом «ORANGE» в списке, мне нужно, чтобы значение в столбце STATUS было «TRUE», иначе значение было бы «FALSE».

Исходный фрейм данных

Я попробовал код ниже, но не получил ожидаемого результата:

datadf = {'ID': ['1000', '1001', '1002', '1003','1004','1005','1006'], 'FRUIT': [["ORANGE","ORANGE"],["ORANGE","PINE"],["PINE","ORANGE"],["PINE","PINE","ORANGE"],["ORANGE","PINE","ORANGE"],["ORANGE","PINE"],["ORANGE","ORANGE","PINE"]]} 

def FRUIT_STATUS(datadf):
    counter=0
    for i in range(len(datadf['FRUIT'])):
        if ("PINE" in datadf['FRUIT'] ):
            return "TRUE" 
    else:
        return "FALSE" 
    
datadf['STATUS'] = datadf.apply(FRUIT_STATUS, axis = 1)

Окончательный фрейм данных должен выглядеть так:

Желаемый фрейм данных

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Одной из возможностей было бы использование регулярных выражений. Обратите внимание, что это также вернет True, если что-то еще находится между PINE и ORANGE. В зависимости от того, что именно вы хотите, вы можете настроить регулярное выражение.

import pandas as pd

datadf = {'ID': ['1000', '1001', '1002', '1003','1004','1005','1006'], 'FRUIT': [["ORANGE","ORANGE"],["ORANGE","PINE"],["PINE","ORANGE"],["PINE","PINE","ORANGE"],["ORANGE","PINE","ORANGE"],["ORANGE","PINE"],["ORANGE","ORANGE","PINE"]]} 

df = pd.DataFrame(datadf)

df['STATUS'] = df.FRUIT.astype(str).str.contains(r'PINE.*ORANGE')

Другие вопросы по теме