Pandas 为什么即使我分割了原始数据帧并将其分配给另一个变量,原始数据帧的值仍然发生了变化?
我试图通过将每项资产的权重乘以资产的每日价格来计算投资组合的每日总价格 目前,我有一个数据帧Pandas 为什么即使我分割了原始数据帧并将其分配给另一个变量,原始数据帧的值仍然发生了变化?,pandas,dataframe,variables,slice,Pandas,Dataframe,Variables,Slice,我试图通过将每项资产的权重乘以资产的每日价格来计算投资组合的每日总价格 目前,我有一个数据帧tw,除了我想要重新平衡的日期之外,它都是零,它保存着我的资产权重。我想做的是在每个月,用我试图重新平衡的权重填充零,直到下一个重新平衡日期,依此类推 我的代码: df_of_weights = tw.loc[dates_to_rebalance[13]:] temp_date = dates_to_rebalance[13] counter = 0 for date in df_of_weights.
tw
,除了我想要重新平衡的日期之外,它都是零,它保存着我的资产权重。我想做的是在每个月,用我试图重新平衡的权重填充零,直到下一个重新平衡日期,依此类推
我的代码:
df_of_weights = tw.loc[dates_to_rebalance[13]:]
temp_date = dates_to_rebalance[13]
counter = 0
for date in df_of_weights.index:
if date.year == temp_date.year and date.month == temp_date.month:
if date.day == temp_date.day:
pass
else:
df_of_weights.loc[date] = df_of_weights.loc[temp_date].values
counter += 1
temp_date = dates_to_rebalance[13+counter]
我理解,如果您对数据帧进行切片并将其分配给变量(
df\u of_weights
),更改所述变量的值不会影响原始数据帧。但是,tw
中的值发生了变化。已经在线搜索了一段时间,我真的很困惑。您应该使用copy
来解决此问题,以便:
df_of_weights = tw.loc[dates_to_rebalance[13]:].copy()
问题是切片提供的是视图而不是副本。这个问题仍然悬而未决
我知道制作副本可以解决问题,但在这种情况下,数据帧切片技术上不应该也起作用吗?我更新了答案。由于这个问题,我总是使用副本。我建议同样的。谢谢!谢谢你的帮助。