【问题标题】:Changing values in a dataframe's copy is changing the original dataframe itself [duplicate]更改数据框副本中的值正在更改原始数据框本身[重复]
【发布时间】:2020-09-12 07:56:54
【问题描述】:

我是 python 新手,对为什么会发生以下情况感到非常困惑 -

  • 我从数据帧 df1 开始
  • 我将它复制并命名为 df2
  • 我更改了副本中的一个值 (df2)
  • 这也会改变 df1 中的值!

这是我在 stackoverflow 上的另一个问题中找到的代码的修改版本(原始问题在这里:Replace single value in a pandas dataframe, when index is not known and values in column are unique):

# Create a dataframe df1
df1 = pd.DataFrame([[5, 2], [3, 4]], columns=('a', 'b'))

#print df1
df1

    a   b
0   5   2
1   3   4

# copy it into df2
df2=df1

#print df2
df2

    a   b
0   5   2
1   3   4

# modify the value in df2 in column b where column a is 3
df2.loc[df2.a == 3, 'b'] = 6
    
# print df2 to check that the value has changed
df2

   a   b
0  5   2
1  3   6

# BUT changing df2 changed df1 also! Print df1
df1

   a   b
0  5   2
1  3   6

有人可以解释一下吗?谢谢

【问题讨论】:

  • 你还没有复制,只是对同一个DataFrame的另一个名字,试试df1.copy()
  • 非常感谢!不知道它只是给它分配了另一个名字

标签: python pandas dataframe


【解决方案1】:

试试下面的代码:

df2 = df1.copy()

您所做的只是将对象引用到不同的名称,而底层对象是相同的,这就是 df2 中的更改在 df1 中可见的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2014-03-18
    • 1970-01-01
    • 2022-12-11
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多