Я искал this post, что почти решило мою проблему. Однако в моем случае я хочу работать на основе 2-го уровня df, но пытаюсь не указывать имена столбцов 1-го уровня явно.Замена значений в столбце второго уровня на MultiIndex df в Pandas
Заимствование оригинальный dataframe:
df = pd.DataFrame({('A','a'): [-1,-1,0,10,12],
('A','b'): [0,1,2,3,-1],
('B','a'): [-20,-10,0,10,20],
('B','b'): [-200,-100,0,100,200]})
##df
A B
a b a b
0 -1 0 -20 -200
1 -1 1 -10 -100
2 0 2 0 0
3 10 3 10 100
4 12 -1 20 200
Я хочу, чтобы назначить NA
ко всем столбцам a
и b
где b<0
. Я выбирал их на основе: df.xs('b',axis=1,level=1)<b
, но тогда я не могу выполнить замену. Тем не менее, у меня есть разные имена 1-го уровня, поэтому индексация там не может быть сделана на основе A
и B
явно, но возможно через df.columns.values
?
Нужный результат будет
##df
A B
a b a b
0 -1 0 NA NA
1 -1 1 NA NA
2 0 2 0 0
3 10 3 10 100
4 NA NA 20 200
Я ценю все советы, спасибо заранее.
изменить 'или' на '|' то это работает. – jezrael
@Sosi - спасибо за редактирование. – jezrael