Панды экспортируют вектор и меняют его форму на массив 1d - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть pd.dataframe

df = {'col1': [1, 2], 'col2': [3, 4]}

Я могу создать ndarray из col2, выполнив следующее:

col2 = np.array(df['col2'].values)

Я хочу добавить число в качестве первого элементаэтот вектор, я попробовал это:

col2=np.array([0])
col2=col2.append( np.array(df['col2'].values))

, но это дает ошибку.

Я также пробовал объединить и (df ['col2']. values) .tolist (), но яне в состоянии решить проблему.

1 Ответ

0 голосов
/ 12 сентября 2018

np.append неэффективно для задач конкатенации.Вместо этого вы можете использовать np.hstack или np.concatenate.Также обратите внимание, pd.Series.values возвращает массив NumPy, поэтому нет необходимости явно приводить с помощью np.array:

df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})

col2 = np.array([0])
col2 = np.hstack((col2, df['col2'].values))

# array([0, 3, 4], dtype=int64)

Как и комментарии @ user3483203, массивы NumPy не являются необходимостью,хотя вы увидите незначительное улучшение скорости.Вы можете использовать list и pd.Series объекты с np.hstack:

col2 = np.hstack(([0], df['col2']))
...