У меня есть датафрейм, например:
B1 B2 B3 B4 BCS ULCA MIMO
6 28A 1A 0 . 1A
7 28A 1A 1 . 1A
8 3A 1A 0 . 1A
9 3A 1A 1 . 1A
10 3A 1A 0 . 3A
11 3A 1A 1 . 3A
12 3A 1A 0 . 1A-3A
13 3A 1A 1 . 1A-3A
и я использую np.where
, чтобы выполнить условие как новые столбцы:
Если значение B1-B4 равно MIMO, введите 4
в новом столбце, если нет - 2
b['B1_m'] = np.where(b['B1'] == b['MIMO'], '4', '2')
b['B2_m'] = np.where(b['B2'] == b['MIMO'], '4', '2')
b['B3_m'] = np.where(b['B3'] == b['MIMO'], '4', '2')
b['B4_m'] = np.where(b['B4'] == b['MIMO'], '4', '2')
но мой вывод содержит ошибку в некоторых строках (строка 10, 11):
B1 B2 B3 B4 BCS ULCA MIMO B1_m B2_m B3_m B4_m
6 28A 1A 0 . 1A 2 4 2 2
7 28A 1A 1 . 1A 2 4 2 2
8 3A 1A 0 . 1A 2 4 2 2
9 3A 1A 1 . 1A 2 4 2 2
10 3A 1A 0 . 3A 2 2 2 2
11 3A 1A 1 . 3A 2 2 2 2
12 3A 1A 0 . 1A-3A 2 2 2 2
13 3A 1A 1 . 1A-3A 2 2 2 2
Есть какой-нибудь намек на то, что происходит?
Обновление
d = b.loc[9:12, ['B1','MIMO']].to_dict(orient='list')
print(d)
Выход:
{'B1': ['3A', '3A', '3A', '3A'], 'MIMO': ['1A', ' 3A', ' 3A', ' 1A-3A']}