2016-12-02 51 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