当从父数据帧中选择子数据帧时,我注意到一些程序员使用.copy()
方法。例如,
X = my_dataframe[features_list].copy()
...而不仅仅是
X = my_dataframe[features_list]
他们为什么要复制数据框?如果我不复印会怎样?
这个答案在新版本的 pandas 中已被弃用。看docs https://pandas.pydata.org/docs/user_guide/indexing.html#evaluation-order-matters
这扩展了保罗的答案。在 Pandas 中,对 DataFrame 进行索引会返回对初始 DataFrame 的引用。因此,更改子集将更改初始 DataFrame。因此,如果您想确保初始 DataFrame 不应该更改,您需要使用副本。考虑以下代码:
df = DataFrame({'x': [1,2]})
df_sub = df[0:1]
df_sub.x = -1
print(df)
你会得到:
x
0 -1
1 2
相反,以下内容使 df 保持不变:
df_sub_copy = df[0:1].copy()
df_sub_copy.x = -1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)