Мне стыдно спрашивать об этом, но через 3 дня я стучу головой о стену. У меня есть датафрейм с идентификатором и три отдельных поля, заполненные альтернативными URL-адресами. Я хочу выбрать URL-адрес в порядке предпочтения (urlA, urlB, url C) и назначить выбранное новое поле с именем selectedUrl. У меня есть функция, которая видит, заполнено ли заданное поле URL и если да, то возвращает этот URL. Я хотел запустить это как функцию применения в pandas, чтобы она работала как можно быстрее. Я сделал подобное применяется успешно, но каждый раз, когда я запускаю его, он возвращает пустое. Я не могу поделиться фактическим набором данных, но я создал анонимную версию для справки.
Есть идеи, почему он продолжает возвращать пробелы? Код:
data = {'id': ['123','456','789'],
'urlA': ['www.google.com','',''],
'urlB': ['','www.amazon.com',''],
'urlC': ['','','www.yahoo.com']
}
df = pd.DataFrame(data, columns=['id','urlA','urlB','urlC'])
#function to select populated url - does the string contain a '.'?
def selectUrl(urlA,urlB,urlC):
tmp = '.'
if tmp in str(urlA):
y= urlA
elif tmp in str(urlB):
y = urlB
elif tmp in str(urlC):
y= urlC
else:
y = ''
return y
#Pandas apply statement
df['selectedURL']=df.apply(lambda x: selectUrl(x['urlA'],x['urlB'],x['urlB']), axis=1)
Я ожидаю, что это вернет
![enter image description here](https://i.stack.imgur.com/ganWw.png)
Есть идеи? Я думал, что, может быть, это возвращение объекта целого поля, которое игнорируется, но не смогло его выяснить. Я не сомневаюсь, что я собираюсь в лицо после того, как кто-то укажет на что-то, но я это заслужил!
Любой совет приветствуется