gpt4 book ai didi

python - Pandas:数据框与用于定义它的 numpy.array 之间的关系

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:41 25 4
gpt4 key购买 nike

我只是想创建两个最初为空的相同维度的数据框。我是这样做的:

import numpy as np
import pandas as pd

m = np.empty((2, 3))*np.nan
df1 = pd.DataFrame(m)
df2 = pd.DataFrame(m)

但是当我更改一个数据框中的特定值时,所有三个对象都会受到影响:

df2.iloc[1, 2] = 1

print(df2)
0 1 2
0 NaN NaN NaN
1 NaN NaN 1.0

print(df1)
0 1 2
0 NaN NaN NaN
1 NaN NaN 1.0

print(m)
array([[nan, nan, nan],
[nan, nan, 1.]])

所以看起来数据框只是一个 numpy 数组的包装器:没有复制。我没有在任何地方看到这种行为的记录,我只是想指出来。有什么意见吗?

最佳答案

DataFrame 有一个 init 参数,让您指定将数据从 ndarray 复制到 DataFrame。

查看 pandas 源代码 frame.py , 行 405然后...默认情况下,copy 为 False。

因此,您可以使用以下内容强制复制:

import numpy as np
import pandas as pd

m = np.empty((2, 3))*np.nan
df1 = pd.DataFrame(m,copy=True)
df2 = pd.DataFrame(m)

df2.iloc[1, 2] = 1
print(df1)
print(df2)

关于python - Pandas:数据框与用于定义它的 numpy.array 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52929023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com