gpt4 book ai didi

python - Pandas DataFrame 可变性

转载 作者:太空狗 更新时间:2023-10-30 01:47:48 26 4
gpt4 key购买 nike

我是 Panda 的 Dataframe 的新手,如果有人可以通过以下示例向我简要讨论 DataFrame 的可变性,我将不胜感激:

d1=pd.date_range('1/1/2016',periods=10,freq='w')
col1=['open','high','low','close']
list1=np.random.rand(10,4)
df1=pd.DataFrame(list1,d1,col1)

据我了解,目前 df1 是对 df 对象的引用。

如果我将 df1 或 df1 的切片(例如 df1.iloc[2:3,1:2])作为输入传递给新的 df,(例如 df2=pd. DataFrame(df1)),df2 是否返回一个新的 dataframe 实例,或者它仍然引用 df1 使 df1 暴露给 df2?

关于 DataFrame 的可变性我应该注意的任何其他点将非常感谢。

最佳答案

这个:

df2 = pd.DataFrame(df1)

构造一个新的DataFrame。有一个 copy 参数,其默认参数为 False。根据文档,这意味着:

> Copy data from inputs. Only affects DataFrame / 2d ndarray input

因此默认情况下,数据将在df2df1 之间共享。如果您不希望共享,而是完整复制,请执行以下操作:

df2 = pd.DataFrame(df1, copy=True)

或者更简洁和地道:

df2 = df1.copy()

如果你这样做:

df2 = df1.iloc[2:3,1:2].copy()

您将再次获得独立副本。但是如果你这样做:

df2 = pd.DataFrame(df1.iloc[2:3,1:2])

它可能会共享数据,但是如果你打算修改df,这种风格很不明确,所以我建议不要写这样的代码。相反,如果您不想复制,只需这样说:

df2 = df1.iloc[2:3,1:2]

总结:如果您想要引用现有数据,请不要调用 pd.DataFrame() 或任何其他方法。如果您想要一个独立的副本,请调用 .copy()

关于python - Pandas DataFrame 可变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993846/

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