python - 将许多一维数组作为一行添加到数据框中?
问题描述
我是 python 新手,我想知道如何将许多一维数组作为一行添加到数据帧中。我在这里查看了上一个问题,但在我的情况下有点不同。这是代码:
df = pd.DataFrame(columns=['Col1', 'Col2', 'Col3'])
arr = np.empty(3)
arr[0] = 756
arr[1] = 123
arr[2] = 452
假设这个答案很好用:
df.append(pd.DataFrame(arr.reshape(1,-1), columns=list(df)), ignore_index=True)
但是当我想在同一个数据框中添加另一个一维数组时:
a = np.empty(3)
a[0] = 700
a[1] = 100
a[2] = 400
df.append(pd.DataFrame(a.reshape(1,-1), columns=list(df)), ignore_index=True)
我得到了空的数据框。它有什么问题?一般如何添加许多一维数组?任何帮助将非常感激!
我的愿望输出:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 756 | 123 | 452 |
+------+------+------+
| 700 | 100 | 400 |
+------+------+------+
解决方案
您需要重新分配df
:
这个:
df = df.append(pd.DataFrame(arr.reshape(1,-1),
columns=list(df)), ignore_index=True)
那么完整的代码就变成了:
import pandas as pd
import numpy as np
df = pd.DataFrame(columns=['Col1', 'Col2', 'Col3'])
arr = np.empty(3)
arr[0] = 756
arr[1] = 123
arr[2] = 452
df = df.append(pd.DataFrame(arr.reshape(1, -1),
columns=list(df)), ignore_index=True)
a = np.empty(3)
a[0] = 700
a[1] = 100
a[2] = 400
df = df.append(pd.DataFrame(a.reshape(1, -1),
columns=list(df)), ignore_index=True)
print('Result: ')
print(df)
# A bit more efficient though:
arr = np.empty((2, 3))
arr[0, 0] = 756
arr[0, 1] = 123
arr[0, 2] = 452
arr[1, 0] = 700
arr[1, 1] = 100
arr[1, 2] = 400
df_2 = pd.DataFrame(columns=['Col1', 'Col2', 'Col3'], data=arr)
print('\nSame result, but more efficient : ')
print(df_2)
推荐阅读
- javascript - 发出套接字 io 事件时更改状态
- fullcalendar - 有没有办法在 Fullcalendar v5 resourceTimeline 视图上扩展上一个和下一个点击事件的资源?
- r-exams - Exams2canvas 与 Canvas 新测验格式兼容吗?
- c - C语言中的scanf
- java - 强制类型而不创建临时变量
- javascript - 如何显示角度验证器的错误?
- python - Python中的过滤字符串
- java - 根据类的值将一个数组分成两个数组。爪哇
- android - MotionLayout / NestedScrollView 奇怪的滚动
- python-3.x - VSCode,Python3.7:自定义装饰类的 pylint 无成员错误