为什么无法在Python中为我的深层副本分配新值?

时间:2019-07-16 13:18:26

标签: python pandas deep-copy shallow-copy

简单地说,我要占用每一行,进行大量所需的计算,然后将同一行添加到新的数据帧中,并根据计算更改一些值。

我一直在尝试深浅复制。我尝试使用.copy()copy包进行深拷贝,但似乎无法为复制的数据帧分配新值。我应该怎么做?

df1 = pd.DataFrame({
    "startdate": pd.to_datetime(["18-07-2022", "31-10-2025", "21-03-2020"]),
    "enddate": pd.to_datetime(["14-02-2019", "30-12-2017", "01-02-2010"]),
})

产生

df1
    startdate   enddate
0   14-02-2019  18-07-2022
1   30-12-2017  31-10-2025
2   01-02-2010  21-03-2020

我在包含如下语句的for循环中对每一行进行深拷贝:

import copy
temp_row = copy.deepcopy(df1.loc[0]) # for the first row

已经将此行存储为深层副本,我想覆盖它的某些值并将此行存储在新的数据框中。一个简单的例子:

from datetime import date

a = date(2019, 2, 25)
b = date(2020, 3, 10)

df2 = pd.DataFrame()
df2.append(temp_row)

df2['startdate'][-1] = a
df2['enddate'][-1] = b

我认为进行深层复制足以为它分配新值。但是,显然不是,因为在打印时会看到以下内容:

print(df2)
    startdate   enddate
0   14-02-2019  18-07-2022 # the shallow copy

我希望df2看起来像这样:

    startdate   enddate
0   25-02-2019  10-03-2020 # the deep copy that I intend

为什么我仍在这里制作浅表副本,而不是可以编辑的深表副本?

0 个答案:

没有答案