等级: 新手上路
- 注册:
- 2023-9-26
- 曾用名:
|
思路是在一个dataframe中通过两个column值定位,然后修改同一行的另一指定column值用 .at 实现,但发现会将另外不相干的dataframe(结构相同,命名不同)一同改变。试过用.loc,同样问题。
如例子中,stal和stal_a相同,通过对stal操作,但stal_a也被改变。
在两台不同电脑上测试过,结果一样。
烦请解答一下,是代码编写还是其他问题,谢谢!
代码:
from PythonApi import *
import numpy as np
import pandas as pd
# 参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现)
#def parameter():
# input_par("myvalues1",5,1,20,1)
# input_par("myvalues2",10,1,20,1)
stal_a = pd.DataFrame(np.arange(35).reshape((5,7)),columns=['serial','startp','endp','stalp','staln','permutation','original'])
print(stal_a)
stal = stal_a
num_b = 28
stalp = 31
staln = 32
permutation = 33
print(stal_a[(stal_a['serial'] == int(num_b))&(stal_a['stalp'] == stalp)])
stal.at[(stal.serial == int(num_b))&(stal.stalp == stalp), 'staln'] = staln+10
stal.at[(stal.serial == int(num_b))&(stal.stalp == stalp), 'permutation'] = permutation + 10
print(stal_a[(stal_a['serial'] == int(num_b))&(stal_a['stalp'] == stalp)])
print(stal[(stal['serial'] == int(num_b))&(stal['stalp'] == stalp)])
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
# 在context中保存全局变量
context.s1 = "SZ000001" #平安银行股票
# print("策略启动") #调试打印输出
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\14498828\QQ\WinTemp\RichOle\684L{MV85VUQI@V6)I$A3R5.png
|
|