Я хочу сделать условный выбор для row 6
в исходном фрейме данных
исходный кадр данных:
B1 B2 B3 B4 BCS ULCA MIMO
3 26A 1A 0,1 . 1A
4 28A 1A 0,1 . 1A
5 19A 3A 1A 0 . 1A, 3A
6 3A 1A 0,1 . 1A, 3A, 1A-3A
Шаг1. Удлинение ряда для BCS
и MIMO
B1 B2 B3 B4 BCS ULCA MIMO
4 26A 1A 0 . 1A
5 26A 1A 1 . 1A
6 28A 1A 0 . 1A
7 28A 1A 1 . 1A
8 19A 3A 1A 0 . 1A
9 19A 3A 1A 0 . 3A
10 3A 1A 0 . 1A
11 3A 1A 1 . 1A
12 3A 1A 0 . 3A
13 3A 1A 1 . 3A
14 3A 1A 0 . 1A-3A
15 3A 1A 1 . 1A-3A
Step.2 А затем сопоставьте столбец B1-B4
с MIMO
, если он равен: затем поместите 4
в новый столбец (Bx_m), если нет, укажите 2
cols = ['B1','B2','B3','B4']
arr = np.where(b[cols].eq(b['MIMO'], axis=0), '4','2')
b = b.join(pd.DataFrame(arr, columns=cols, index=b.index).add_suffix('_m'))
B1 B2 B3 B4 BCS ULCA MIMO B1_m B2_m B3_m B4_m
4 26A 1A 0 . 1A 2 4 2 2
5 26A 1A 1 . 1A 2 4 2 2
6 28A 1A 0 . 1A 2 4 2 2
7 28A 1A 1 . 1A 2 4 2 2
8 19A 3A 1A 0 . 1A 2 2 4 2
9 19A 3A 1A 0 . 3A 2 4 2 2
10 3A 1A 0 . 1A 2 4 2 2
11 3A 1A 1 . 1A 2 4 2 2
12 3A 1A 0 . 3A 4 2 2 2
13 3A 1A 1 . 3A 4 2 2 2
14 3A 1A 0 . 1A-3A 2 2 2 2
15 3A 1A 1 . 1A-3A 2 2 2 2
Требования
Но вот особые требования к формату с row 6
в исходном фрейме данных.
Правила:
Каждое значение в MIMO
поочередно заполняется 4 в соответствии Bx_m
Если есть значение для двух значений вместе (1A-3A
), то просто введите 4 в Bx_m
одновременно
То есть:
Если формат значения похож на 1A, 3A, 1A-3A
в столбце MIMO
(вместо 1A, 3A
)
Тогда на выходе нужно только сохранить 1A-3A
на шаге 1
И заполните 4
в столбцах B1_m и B2_n одновременно в Шаге 2
.
Исходные данные:
B1 B2 B3 B4 BCS ULCA MIMO
6 3A 1A 0,1 . 1A, 3A, 1A-3A
Исходный вывод (хочет изменить): (6 строк)
B1 B2 B3 B4 BCS ULCA MIMO B1_m B2_m B3_m B4_m
10 3A 1A 0 . 1A 2 4 2 2
11 3A 1A 1 . 1A 2 4 2 2
12 3A 1A 0 . 3A 4 2 2 2
13 3A 1A 1 . 3A 4 2 2 2
14 3A 1A 0 . 1A-3A 2 2 2 2
15 3A 1A 1 . 1A-3A 2 2 2 2
Требуется цель: (только 2 строки. B1_m и B2_m оба заполняют 4
)
B1 B2 B3 B4 BCS ULCA MIMO B1_m B2_m B3_m B4_m
14 3A 1A 0 . 1A-3A 4 4 2 2
15 3A 1A 1 . 1A-3A 4 4 2 2
Пожалуйста, помогите мне, как решить это. Спасибо.
Обновление
df = pd.concat([b1.set_index('index'),b2.set_index('index')]).sort_index()
print(df)
B1 B2 B3 B4 BCS ULCA MIMO B1_m B2_m B3_m B4_m
index
0 42A 19A 0 . . 2 2 2 2
1 18A 1A 0 . 1A 2 4 2 2
10 3A 1A 0 . 3A 4 2 2 2
100 41A 28A 3A 0 . 3A 2 2 4 2
101 41A 28A 3A 0 . 41A 4 2 2 2
102 42A 28A 3A 0 . 3A 2 2 4 2
103 42A 41A 3A 0 . 3A 2 2 4 2
104 42A 41A 3A 0 . 41A 2 4 2 2
105 41C 3A 0 . 3A 2 4 2 2
106 41C 3A 0 . 41C 4 2 2 2
107 41C 3A 0 . 3A-41C 4 4 2 2
108 42C 3A 0 . 3A 2 4 2 2
109 42C 41A 0 . 41A 2 4 2 2
11 3A 1A 1 . 3A 4 2 2 2