通常我会创建一个新列df [' c'] = df [' a'] * df [' b']来计算列之间的产量a和b,其中df是pandas的数据帧dtypes是float64。并且pandas officially recommended this method instead of ".mul()" method。但是当我在下面运行代码时,我发现了错误。
def func(sym):
location="D:\\data\\"
df=pd.read_csv(location+sym+".csv")
df['c']=df['A']*df['B'] # bug existing method (1)
# df['c']=df['A'].mul(df['B'],axis=0) #replacing method (2)
.....
for sym in symbollist:
func(sym)
我使用下面的代码清理股票数据,显然df可能很大。但len(符号列表)只等于50.代码运行多次后,方法(1)可能会导致随机符号的列c的值分配为零,而方法(2)从开始到结束表现良好。
我使用的是eclipse和Anaconda的最新版本,而python是2.7。熊猫:0.17.1,Numpy:1.10.1。