简单地说,我要占用每一行,进行大量所需的计算,然后将同一行添加到新的数据帧中,并根据计算更改一些值。
我一直在尝试深浅复制。我尝试使用.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
为什么我仍在这里制作浅表副本,而不是可以编辑的深表副本?