Добавить 1-D Numpy Array в DataFrame как строку - PullRequest
1 голос
/ 08 октября 2019

Существует ли функция, позволяющая эффективно добавлять массив NumPy непосредственно в DataFrame?

Переменные:

df = pd.DataFrame(columns=['col1', 'col2', 'col3'])

Out[1]: +------+------+------+
        | Col1 | Col2 | Col3 |
        +------+------+------+
        |      |      |      |
        +------+------+------+


arr = np.empty(3)

# array is populated with values. Random numbers are chosen in this example,
#    but in my program, the numbers are not arbitrary.
arr[0] = 756
arr[1] = 123
arr[2] = 452

Out[2]: array([756, 123, 452])

Как напрямую добавить arr в конецdf чтобы получить это?

+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
|  756 |  123 |  452 |
+------+------+------+

Я пытался использовать df.append(arr), но он не принимает массивы NumPy. Я мог бы преобразовать массив NumPy в DataFrame, а затем добавить его, но я думаю, что это будет очень неэффективно, особенно на миллионах итераций. Есть ли более эффективный способ сделать это?

Ответы [ 2 ]

1 голос
/ 08 октября 2019

@ комментарий rafaelc может работать, только если ваш Pandas DataFrame проиндексирован от 0 до len (df) -1, так что это не общий обходной путь, и он может легко вызвать тихую ошибку в вашем коде.

Если вы уверены, что в вашем массиве Numpy есть те же столбцы, что и в вашем Pandas DataFrame, вы можете попробовать использовать функцию append с пониманием dict следующим образом:

data_to_append = {}
for i in range(len(df.columns)):
    data_to_append[df.columns[i]] = arr[i]
df = df.append(data_to_append, ignore_index = True)

Вам необходимо переназначитьDataFrame, потому что функция append не поддерживает модификацию на месте.

Надеюсь, это поможет.

0 голосов
/ 08 октября 2019

@ BalrogOfMoira - это действительно быстрее, чем просто создание кадра данных для добавления?

df.append(pd.DataFrame(arr.reshape(1,-1), columns=list(df), ignore_index=True)) 

В противном случае @Wonton, вы можете просто объединить массивы и записать их во фрейм данных, который может быть добавлен к исходным данным. кадр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...