Как выбрать столбцы на основе критериев? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть следующий фрейм данных:

d2 = {('CAR','ALPHA'): pd.Series(['A22', 'A23', 'A24', 'A25'],index=[2, 3, 4, 5]), 
  ('CAR','BETA'): pd.Series(['B22', 'B23', 'B24', 'B25'],index=[2, 3, 4, 5]),
  ('MOTOR','SOLO'): pd.Series(['S22', 'S23', 'S24', 'S25'], index=[2, 3, 4, 5])}
db= pd.DataFrame(data=d2)

enter image description here

Я хотел бы в столбцах, которые имеют 'CAR' в мультииндексе уровня 0 дляудалите все значения и установите их на NA после индекса строки, напр. 4.

Я пытаюсь использовать .loc, но я хотел бы, чтобы результаты были сохранены в одном и том же кадре данных.

Второе, что я хотел бы сделать, чтобы установить значения столбцов, которыеих уровень мультииндекса 0 отличается от 'CAR' до NA после индекса строки, например 3.

1 Ответ

1 голос
/ 14 октября 2019

Используйте слайсеры для первого и второго MultiIndex.get_level_values сравните по значению уровня:

idx = pd.IndexSlice
db.loc[4:, idx['CAR', :]] = np.nan

db.loc[3:, db.columns.get_level_values(0) != 'CAR'] = 'AAA'

Или:

mask = db.columns.get_level_values(0) == 'CAR'

db.loc[4:, mask] = np.nan
db.loc[3:, ~mask] = 'AAA'

print(db)
    CAR      MOTOR
  ALPHA BETA  SOLO
2   A22  B22   S22
3   A23  B23   AAA
4   NaN  NaN   AAA
5   NaN  NaN   AAA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...