将一维 Numpy 数组作为一行添加到 DataFrame

Won*_*ton 10 python arrays numpy dataframe pandas

是否有一个函数可以让您有效地将 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])
Run Code Online (Sandbox Code Playgroud)

我如何直接附加arr到末尾df来得到这个?

+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
|  756 |  123 |  452 |
+------+------+------+
Run Code Online (Sandbox Code Playgroud)

我试过使用,df.append(arr)但它不接受 NumPy 数组。我可以将 NumPy 数组转换为 DataFrame 然后附加它,但我认为这会非常低效,尤其是经过数百万次迭代。有没有更有效的方法来做到这一点?

bra*_*lio 6

@BalrogOfMoira 真的比简单地创建要追加的数据帧快吗?

df.append(pd.DataFrame(arr.reshape(1,-1), columns=list(df)), ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

否则@Wonton 你可以简单地连接数组然后写入一个数据框,它可以附加到原始数据框。


小智 6

这将起作用:

df.append(pd.DataFrame(arr).T)
Run Code Online (Sandbox Code Playgroud)