为什么我要做一个数据帧的浅拷贝?

2024-06-01 13:39:24 发布

您现在位置:Python中文网/ 问答频道 /正文

why should I make a copy of a data frame in pandas有关

我注意到在流行的backtesting图书馆里

def __init__(self, data: pd.DataFrame)
    data = data.copy(False)

第631行。这样一本书的目的是什么?你知道吗


Tags: ofinselfpandasdatamake图书馆init
1条回答
网友
1楼 · 发布于 2024-06-01 13:39:24

一个浅薄的副本可以让你

  1. 无需复制即可访问帧数据(内存优化等)
  2. 修改frames结构而不将其反映到原始数据帧

在回溯测试中,开发人员尝试将索引更改为datetime格式(第640行),并添加一个新的列'Volume',如果它还没有在dataframe中,则使用np.nan值。这些变化不会反映在原始数据帧上。你知道吗

示例

>>> a = pd.DataFrame([[1, 'a'], [2, 'b']], columns=['i', 's'])
>>> b = a.copy(False)
>>> a
    i  s
 0  1  a
 1  2  b
>>> b
    i  s
 0  1  a
 1  2  b
>>> b.index = pd.to_datetime(b.index)
>>> b['volume'] = 0
>>> b
                               i  s  volume
1970-01-01 00:00:00.000000000  1  a       0
1970-01-01 00:00:00.000000001  2  b       0
>>> a
    i  s
 0  1  a
 1  2  b

当然,如果不创建浅层副本,对数据帧结构的更改将反映在原始副本中。你知道吗

相关问题 更多 >