Панды - создать столбец на основе имен столбцов, на которые есть ссылки в другом столбце

1

Я пробовал mutliple вещи (карты, фильтры, объединения), но ничего не работает. То, что я пытаюсь сделать, лучше всего описывается в следующей таблице: (Мне нужно получить "обязательный" столбец)

    colA    colB    colC    ref     required
1   a1        b1    c1      colA     a1
2   a2        b2    c2      colA     a2
3   a3        b3    c3      colB     b3
4   a4        b4    c4      colB     b4
5   a5        b5    c5      colC     c5
6   a6        b6    c6      colC     c6

Вышеприведенное является просто примером - в реальном примере у меня есть> 50 столбцов, поэтому условия не будут работать...

Любые предложения, как это сделать?

Теги:
pandas
dataframe
mapping
slice

2 ответа

4

Если я правильно понимаю вашу проблему, apply следующий подход:

# Starting DataFrame:
>>> df
  colA colB colC   ref
1   a1   b1   c1  colA
2   a2   b2   c2  colA
3   a3   b3   c3  colB
4   a4   b4   c4  colB
5   a5   b5   c5  colC
6   a6   b6   c6  colC

df['required'] = df.apply(lambda x: x.loc[x.ref], axis=1)

# Final DataFrame:
>>> df
  colA colB colC   ref required
1   a1   b1   c1  colA       a1
2   a2   b2   c2  colA       a2
3   a3   b3   c3  colB       b3
4   a4   b4   c4  colB       b4
5   a5   b5   c5  colC       c5
6   a6   b6   c6  colC       c6
3

Я бы использовал метод поиска:

In [85]: df['required'] = df.lookup(df.index, df.ref)

In [86]: df
Out[86]:
  colA colB colC   ref required
1   a1   b1   c1  colA       a1
2   a2   b2   c2  colA       a2
3   a3   b3   c3  colB       b3
4   a4   b4   c4  colB       b4
5   a5   b5   c5  colC       c5
6   a6   b6   c6  colC       c6

Ещё вопросы

Сообщество Overcoder
Наверх
Меню