【发布时间】:2021-12-30 15:59:01
【问题描述】:
我有以下名为 df1 的数据框:
| A | B | |
|---|---|---|
| 0 | 5 | 10 |
| 1 | 15 | 20 |
| 2 | 25 | 30 |
现在,假设我还有以下空白 3D 数组(现在仅作为占位符创建):
array1 = np.zeros((10,3,2))
df1 具有相同的行数和列数,如何将array1 中的第一个“面板”(十个“面板”)替换为df1?
【问题讨论】:
标签: python arrays pandas dataframe numpy
我有以下名为 df1 的数据框:
| A | B | |
|---|---|---|
| 0 | 5 | 10 |
| 1 | 15 | 20 |
| 2 | 25 | 30 |
现在,假设我还有以下空白 3D 数组(现在仅作为占位符创建):
array1 = np.zeros((10,3,2))
df1 具有相同的行数和列数,如何将array1 中的第一个“面板”(十个“面板”)替换为df1?
【问题讨论】:
标签: python arrays pandas dataframe numpy
您可以直接将DataFrame分配给第一个“面板”:
array1[0] = df
print(array1)
# Output:
[[[ 5. 10.]
[15. 20.]
[25. 30.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
# ...followed by 7 more identical 3x2 zero matrices
出于习惯,我首先尝试了array1[0, :, :] = df.to_numpy(),据我所知,它给出了相同的结果,但其意图更明确。
【讨论】:
试试这个:
array1[0] = df1
输出:
>>> array1
array([[[ 5., 10.],
[15., 20.],
[25., 30.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
...
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]]])
【讨论】:
你可以像提到的richardec一样直接分配
array1[0] = df1
你也可以试试这个来了解内部发生了什么
array=np.array(df)
array1[0]=array
两种情况下的输出相同
array([[[ 5., 10.],
[15., 20.],
[25., 30.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]]])
【讨论】:
array=np.array(df) 与 df.to_numpy() 相同