Назначить новый столбец, используя набор подколонок

1

У меня есть dataframe с столбцом "имя" формы ['A', 'B', 'C', A ',' B ',' B '....] и набор массивов: один соответствует "A", скажем, array_A = [0, 1, 2...] и array_B = [3, 1, 0...], array_C и т.д. Я хочу создать новое значение столбца, назначив array_A, где имя строки в dataframe равно "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  
Теги:
pandas
arrays
numpy

1 ответ

1
Лучший ответ

Вы можете использовать цикл 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню