Назначить новый столбец, используя набор подколонок - PullRequest
0 голосов
/ 18 октября 2018

У меня есть фрейм данных с именем столбца в форме ['A', 'B', 'C', A ',' B ',' B '....] и набором массивов:один соответствует 'A', скажем array_A = [0, 1, 2 ...] и array_B = [3, 1, 0 ...], array_C и т. д ... Я хочу создать новый столбец 'value' с помощьюприсваивание array_A, где имя строки в кадре данных равно 'A', и аналогично для 'B' и 'C'.

Функция df['value']=np.where(df['name']=='A',array_A, df['value']) не будет этого делать, поскольку она перезапишет значения для других именили проблемы с размерностью.

Например:

arrays = {'A': np.array([0, 1, 2]),
          'B': np.array([3, 1])}

Желаемый результат:

df = pd.DataFrame({'name': ['A', 'B', 'A', 'A', 'B']})

  name  value 
0    A      0 
1    B      3  
2    A      1  
3    A      2  
4    B      1  

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете использовать цикл for со словарем:

arrays = {'A': np.array([0, 1, 2]),
          'B': np.array([3, 1])}

df = pd.DataFrame({'name': ['A', 'B', 'A', 'A', 'B']})

for k, v in arrays.items():
    df.loc[df['name'] == k, 'value'] = v

df['value'] = df['value'].astype(int)

print(df)

  name  value
0    A      0
1    B      3
2    A      1
3    A      2
4    B      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...