pandas iterrows затем сопоставляет

#python #pandas

#python #pandas

Вопрос:

У меня есть dataframe такой:

 C1  C2      C3       C4
A   TV      /r/tv3   NaN
B   Music   Pop      /r/pop
C   /r/foo  NaN      NaN
 

Мне нужно выполнить итерацию по каждой строке и получить значение первого столбца, а затем найти значение столбца, который начинается с /r/ . Таким образом, результат должен выглядеть следующим образом:

 A    /r/tv3
B    /r/pop
C    /r/foo
 

Какой самый быстрый pythonic способ сделать это?

Ответ №1:

Используя where после startswith

 df.where(df.apply(lambda x : x.str.startswith(pat='/r/'),axis=1)).stack().reset_index(level=1,drop=True)
Out[680]: 
C1
A    /r/tv3
B    /r/pop
C    /r/foo
dtype: object
 

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

1. потрясающе! но он не выводит первый столбец (т. Е. C1). Это дает только второй столбец

2. @msmazh добавление .reset_index() в конце