Я пробовал 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 столбцов, поэтому условия не будут работать...
Любые предложения, как это сделать?
Если я правильно понимаю вашу проблему, 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
Я бы использовал метод поиска:
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