У меня есть большой массив данных, состоящий из (1200, 10) в основном строки, где я должен добавить новый столбец, скажем «Z», на основе существующего справочного столбца, скажем «Y», значения которого «A», «B» , 'C' или неизвестно (NaN или другое), из этого мне нужно выбрать один из трех соответствующих столбцов в df, скажем 'D', 'E', 'F', или вывести NaN и добавить это значение в качестве столбца ' Z». В настоящее время у меня есть следующий код:
df = pd.DataFrame({'T': {0: '.', 1: '.', 2: '.', 3: '.'},
'G': {0: '.', 1: '.', 2: '.', 3: '.'},
'D': {0: 4, 1: 1, 2: 5, 3: 3},
'E': {0: 6, 1: 2, 2: 7, 3: 2},
'F': {0: 8, 1: 3, 2: 9, 3: 1},
'K': {0: '.', 1: '.', 2: '.', 3:'.'},
'Y': {0: 'A', 1: 'B', 2: 'B', 3: np.nan}})
d = {'A': 'D', 'B': 'E', 'C': 'F'}
df['Z'] = df.lookup(df.index, df.Y.map(d))
Проблема в том, что поиск ломается, где Y - неизвестное значение. и в конкретном коде Y.unique () выдает что-то вроде (A, B, C, NaN, nan). Так что мне было интересно, есть ли способ использовать метод поиска, который выводит Z в NaN, где Y - это NaN или неизвестно за пределами данного слова?
T G D E F K Y Z
0 . . 4 6 8 . A 4.0
1 . . 1 2 3 . B 2.0
2 . . 5 7 9 . B 7.0
3 . . 3 2 1 . NaN NaN