【发布时间】:2017-11-01 08:48:24
【问题描述】:
我有一个数据框,它有两个相关的列(实际上有 >2,但不认为这很重要),其中一个列中有重复项。
重复项位于 HAB_slice['Radial Position'] 列中,增量为 0.1。
理想情况下,我想说如果 HAB_slice['Radial Position'] 中的两个值彼此相等,请找出它们之间的绝对值差并将它们添加到运行总计中。
当前代码如下所示:
possible_pos = np.linspace(0, 1, 1 / stepsize+1)
center_sum = 0
for i in range(0, len(possible_pos)):
temp = HAB_slice[HAB_slice['Radial Position']==possible_pos[i]]
if len(temp) == 2:
center_sum += np.abs(temp['I'].diff().values[1])
print center_sum
虽然它确实返回一个值并且不会引发错误,但 center_sum 的值与我手动计算时的值不同。我认为这只是嵌套有问题,但我对循环很陌生并且不太确定。
错误示例:以下数据在此代码中产生 center_sum = 0,但如果您在径向位置彼此相等时手动计算 I 的绝对值差,则它等于 0.0045878。
I Radial Position
0.14289522 1
0.14298554 0.9
0.1430356 0.8
0.1430454 0.7
0.1430552 0.6
0.14266456 0.5
0.14227392 0.4
0.14234106 0.3
0.14286598 0.2
0.1433909 0.1
0.14309062 0
0.14279034 0.1
0.14271344 0.2
0.14285992 0.3
0.1430064 0.4
0.14327248 0.5
0.14353856 0.6
0.14356664 0.7
0.14335672 0.8
0.1431468 0.9
0.14338368 1
编辑:我已经用示例代码简化了一些事情以尝试让它工作。
test1 = [[0.14309062,0],[0.1433909,0.1], [0.14286598,0.2], [0.14234106,0.3],
[0.14279034,0.1], [0.14271344,0.2], [0.14285992,0.3]]
'''
test2 = [[0.14289522,1],[0.14298554,0.9],[0.1430356,0.8],[0.1430454,0.7],
[0.1430552,0.6],[0.14266456,0.5],[0.14227392,0.4],[0.14234106,0.3],
[0.14286598,0.2],[0.1433909,0.1],[0.14309062,0],[0.14279034,0.1],
[0.14271344,0.2],[0.14285992,0.3],[0.1430064,0.4],[0.14327248,0.5],
[0.14353856,0.6],[0.14356664,0.7],[0.14335672,0.8],[0.1431468,0.9],
[0.14338368,1]]
'''
stepsize = 0.1
possible_pos = np.linspace(0, 1, 1 / stepsize+1)
HAB_slice = pd.DataFrame(test1)
HAB_slice.columns = ['I', 'Radial Position']
【问题讨论】:
-
闻起来像浮动 pt 问题。
标签: python loops pandas numpy if-statement