【发布时间】:2016-07-29 11:43:20
【问题描述】:
我正在尝试执行计算,然后循环遍历相同的 pandas 数据帧并执行相同的计算,但使用更改的变量(每次循环时都会增加)。如果循环范围设置为 1,则所有行都会正确计算并创建新的数据框。但是,尝试实际循环程序会导致除第一行之外的所有地方都是 NaN 值。
欧米茄循环
for i in range(10):
#Determine first and last Julian dates of data
t1 = df.ix[:0,'jd']
t2 = df.ix[n-1:,'jd']
t2 = t2.reset_index(drop=True)
tj = t2-t1
#Iterate over each observation within each star file
jd = df['jd']
dmag = df['dmag']
sinw = np.sin(2*omega*jd)
sum1 = sinw.sum()
cosw = np.cos(2*omega*jd)
sum2 = cosw.sum()
#Calculate tau
tau = ((np.arctan(sum1/sum2))/(2*omega))
avgdmag = dmag.sum()/n
#Calculate sample variance
tot = (df['dmag']-avgdmag)**2
tot2 = tot.sum()
var = tot2/(n-1)
#Calculate sums for power series
sum3 = sum3 + ((dmag - avgdmag)*np.cos(omega*(jd-tau)))
sum4 = sum4 + (np.cos(omega*(jd-tau)))**2
sum5 = sum5 + ((dmag - avgdmag)*np.sin(omega*(jd-tau)))
sum6 = sum6 + (np.sin(omega*(jd-tau)))**2
#Calculate power series and normalized power series
px = (((sum3**2)/sum4)+((sum5**2)/sum6))/2
pn = px/var
#Step through sequential frequencies
omega = omega + (1/tj)
最后我还收到了来自 NumPy 的运行时警告,该警告是由 omega 术语引起的。我禁用了“无效”警告,因为它不会导致实际计算出现问题。第一个错误计算的数据帧是sinw 和cosw。并且所有随后计算的数据帧都有 NaN 值。
【问题讨论】:
-
for i in range(10): --- 我没有在循环中看到“i”。
-
我最初只是打印“i”以便我可以看到进度,但我不需要在计算中使用“i”。虽然,我可以在末尾使用我的
omega术语作为range()函数中的步长吗?
标签: python-3.x numpy pandas