gpt4 book ai didi

python - 当我们通过 df.iloc 方法将变量分配给单个 numpy.float64 时,df 会被暴露吗?

转载 作者:行者123 更新时间:2023-11-30 22:32:49 26 4
gpt4 key购买 nike

df=pd.DataFrame([[2,4,6],[5,7,8],[2,4,6],[5,7,8],[2,4,6],[5,7,8]])

   0  1  2
0 2 4 6
1 5 7 8
2 2 4 6
3 5 7 8
4 2 4 6
5 5 7 8

当我们将变量分配给 df.iloc 时,例如 extract=df.iloc[2:5,0:2] ,我知道引用变量 extract 的数据已公开(可变为 df)。但是,如果我只想将变量引用到确切的数字(例如 extract=df.iloc[3,4] ),原始 df 是否仍然暴露于提取? (以及将该单个数字的副本获取到变量exact的最佳方法是什么?)当我这样做时 print(type(df.iloc[3,4]) ,我注意到类型是 <class 'numpy.float64'> 。这是对象引用还是原始数据?

最佳答案

没有。当您将 df.iloc[3, 2] 返回的内容分配给 extract 并运行 type(extract) 时,您将得到 numpy.int64.

通过查看 is_copy 属性,您可以知道某些内容将在源数据帧上进行操作。

extract = df.iloc[2:5, 0:2]

type(extract)

pandas.core.frame.DataFrame
<小时/>
print(extract.is_copy)

<weakref at 0x11b27cd60; to 'DataFrame' at 0x11bd64050>

因此在这种情况下,extract 指向与 df 相同的数据。

我们可以用各种情况对此进行测试

extract = df.iloc[[4], 1]

type(extract)

pandas.core.series.Series
<小时/>
print(extract.is_copy)

None
<小时/>
extract = df.iloc[[2], [1]]

type(extract)

pandas.core.frame.DataFrame
<小时/>
print(extract.is_copy)

<weakref at 0x11b27c100; to 'DataFrame' at 0x11bd642d0>
<小时/>

看来,如果您对 df 进行切片并通过使用两个生成数组的索引器来维护数据帧维度,例如 [2][0, 1]:2 那么我们将获得一个包含连接数据的数据帧。

<小时/>

一个索引器怎么样

extract = df.iloc[:2]

print(extract.is_copy)

<weakref at 0x11b27c100; to 'DataFrame' at 0x11bd642d0>

是的,仍然是对df中数据的引用

如果您想确保自己不是

extract = df.iloc[[2], [1]].copy()

print(extract.is_copy)

None

不是对df中数据的引用

关于python - 当我们通过 df.iloc 方法将变量分配给单个 numpy.float64 时,df 会被暴露吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341408/

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