Преобразование определенных столбцов в фрейме данных в массив Numpy и объединение с оригинальным фреймом данных

1

У меня есть dataframe, как это

Company_id  year  dummy_1 dummy_2 dummy_3 dummy_4 dummy_5
1           1990   1       0        1        1      1
1           1991   0       0        1        1      0
1           1992   0       0        1        1      0
1           1993   1       0        1        1      0
1           1994   0       1        1        1      0
1           1995   0       0        1        1      0
1           1996   0       0        1        1      1

Мне нужны последние 5 столбцов в качестве вектора, а затем добавьте его в исходный фреймворк. Я знаю, что я могу срезать столбцы и creata матрицу, такую как:

df.as_matrix(columns=[df[-5:]])

Вот результат, который я хочу:

 Company_id  year  dummy_1 dummy_2 dummy_3 dummy_4 dummy_5   vector
    1           1990   1       0        1        1      1       [1, 0, 1, 1, 1]
    1           1991   0       0        1        1      0       [0, 0, 1, 1, 0]
    1           1992   0       0        1        1      0       [0, 0, 1, 1, 0]
    1           1993   1       0        1        1      0       [1, 0, 1, 1, 0]
    1           1994   0       1        1        1      0       [0, 1, 1, 1, 0]
    1           1995   0       0        1        1      0       [0, 0, 1, 1, 0]
    1           1996   0       0        1        1      1       [0, 0, 1, 1, 1]

Но как я могу добавить его как массив в исходный набор данных?

  • 0
    Конечно, добавив сейчас
Теги:
pandas
numpy

1 ответ

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

Мне кажется, нужно выбрать последние столбцы с помощью iloc и assign новый столбец, преобразованный в массивы numpy и списки:

df = df.assign(new = df.iloc[:, -5:].values.tolist())
print (df)
   Company_id  year  dummy_1  dummy_2  dummy_3  dummy_4  dummy_5  \
0           1  1990        1        0        1        1        1   
1           1  1991        0        0        1        1        0   
2           1  1992        0        0        1        1        0   
3           1  1993        1        0        1        1        0   
4           1  1994        0        1        1        1        0   
5           1  1995        0        0        1        1        0   
6           1  1996        0        0        1        1        1   

               new  
0  [1, 0, 1, 1, 1]  
1  [0, 0, 1, 1, 0]  
2  [0, 0, 1, 1, 0]  
3  [1, 0, 1, 1, 0]  
4  [0, 1, 1, 1, 0]  
5  [0, 0, 1, 1, 0]  
6  [0, 0, 1, 1, 1]  
  • 0
    Извините, я должен сказать что-то toarray (), потому что я буду использовать их для сравнения позже
  • 0
    @ DogukanYılmaz - Тогда нужно df['new'] = df['new'].apply(np.array) ?

Ещё вопросы

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