2016-12-02 47 views
-1

我从下面的分析中发现了两个值:减法2个LOC值的

v1= dd['y'].loc[dd['localtime']==dd['localtime'].max()] 

v2= dd['y'].loc[dd['localtime']==dd['localtime'].min()] 

值的格式为:

v1 
4906 4344.22552 
Name: y, dtype: float64 

v2 
4785 5400.39864 
Name: y, dtype: float64 

我怎样才能得到这两个值的差异(v2-v1)(5400.39864 - 4344.22552)

回答

0

如果分配v3 = v2 - v1不起作用,请确保它们具有相同的对象类型。但是,它看起来像你想找到一个时间差,在这种情况下,我想看看熊猫的内置Time Delta功能

+0

感谢。这是对象类型问题。 – Shahadat05

0

我认为你可以使用:

v1 = pd.Series(4344.22552, index=[4906], name='y') 
print (v1) 
4906 4344.22552 
Name: y, dtype: float64 

v2 = pd.Series(5400.39864, index=[4785], name='y') 
print (v2) 
4785 5400.39864 
Name: y, dtype: float64 

。减去值由values转化为numpy array - 获得阵列,length=1,因此通过[0]选择:

print (v2.values[0] - v1.values[0]) 
1056.17312 

print ((v2.values - v1.values)[0]) 
1056.17312 

或者通过选择v1v2第一个值:

print (v2.iat[0] - v1.iat[0]) 
1056.17312 

但我觉得更好的是使用idxmaxidxmin

v1 = dd.loc[dd['localtime'].idxmax(), 'y'] 
v2= dd.loc[dd['localtime'].idxmin(), 'y'] 

样品:

dd = pd.DataFrame({'localtime':[1,2,3,5], 
        'y':[5400.39864,2000,3000,4344.22552]}, 
        index=[4785,4786,4788,4906]) 

print (dd) 
     localtime   y 
4785   1 5400.39864 
4786   2 2000.00000 
4788   3 3000.00000 
4906   5 4344.22552 

v1 = dd.loc[dd['localtime'].idxmax(), 'y'] 
v2 = dd.loc[dd['localtime'].idxmin(), 'y'] 

print (v2 - v1) 
1056.17312 
+0

谢谢。这是一个很好的建议。 我想,我遇到了数据类型的问题。 我只是将它转换为int。 v1 = int(dd ['y']。loc [dd ['localtime'] == dd ['localtime']。max()]) v2 = int(dd ['y']。loc [dd [ 'localtime'] == dd ['localtime']。min()]) 打印(v2-v1) – Shahadat05