原始DataFrame改变值的原因是因为在Python中,变量赋值是通过引用传递的方式进行的。当将原始DataFrame分割并赋给另一个变量时,实际上是将原始DataFrame的引用赋给了新的变量,而不是创建了一个新的DataFrame对象。
这意味着,无论是对原始DataFrame还是新的变量进行操作,实际上都是对同一个DataFrame对象进行的操作。因此,当对其中一个对象进行修改时,另一个对象也会受到影响,因为它们共享相同的内存空间。
要避免这种情况,可以使用DataFrame的copy()方法创建一个新的DataFrame对象,而不是仅仅赋值给另一个变量。copy()方法会创建一个原始DataFrame的副本,这样对副本的修改不会影响原始DataFrame。
以下是一个示例代码:
import pandas as pd
# 创建原始DataFrame
df_original = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 使用copy()方法创建副本
df_copy = df_original.copy()
# 修改副本的值
df_copy['A'][0] = 100
# 打印原始DataFrame和副本的值
print(df_original)
print(df_copy)
输出结果为:
A B
0 1 4
1 2 5
2 3 6
A B
0 100 4
1 2 5
2 3 6
可以看到,修改副本的值并不会影响原始DataFrame的值。
领取专属 10元无门槛券
手把手带您无忧上云