2014-10-22 45 views
2

我正在撓我的腦袋,弄清楚我該如何做這樣的事情。Python:如何在一組行中找到一個元素小於1而另一個大於1?

我有一個數據幀,看起來像這樣...

   A   B   C   D   E 
1/2/2012 9:18 0.997558702 1.001294498 1.004264524 1.002337408 1.003628447 
1/2/2012 9:19 1.004805553 1.001939237 1.002523232 1.001323543 1.003615329 
1/2/2012 9:20 1.001151359 1.001290323 0.997728668 0.999937057 1 
1/2/2012 9:21 1.001680821 1.003221649 1.001661232 1.000220313 1.003746398 
1/2/2012 9:22 0.998454473 0.998715478 0.998095823 0.996286973 0.996985357 
1/2/2012 9:23 0.996461899 0.99903537 1.00055388 0.999778915 0.997408207 
1/2/2012 9:24 1.002174781 0.999034438 1.000492065 1.0.997978923 
1/2/2012 9:25 0.999379982 1.00064433 0.998708963 1.000063103 0.999855345 

我想找出行,其中 sets where one element is > 1 and other is < 1 or reverse 不要緊的< 1> 1的順序。雖然重要的是比較在同一列和連續的時間內。我要統計所有這類事件經柱爲數據幀

所以輸出像

 A B C D E 
index 4 2 5 4 1 

我試圖想在循環結束,只是不停地增加,但不知何故,覺得應該有更好的方式供您選擇數據幀。

這個問題已經回答,但約翰建議包括僞代碼和列名稱。 的每一行,如果行< 1和row.shift(1)> 1或行> 1個row.shift(1)計數

我是想檢查是如果我能避免檢查它既方式,因爲本質上它找到了+ ve -ve組合的方式。

P.S >>我正在檢查此數據集的平均回覆趨勢。

+0

我不明白你的問題。紅色的盒子是什麼意思?我們需要在這裏定義操作的過程中變得更加嚴格,輸出的含義是什麼(是那些行號?列號?)。 – 2014-10-22 04:05:37

+0

讓我以不同的方式解釋它 - 紅色框是由where元素> 1獲得的對,同一列中的下一個元素<1或元素<1,同一列中的下一個元素> 1。這樣的雙列明智。 – Yantraguru 2014-10-22 04:18:28

回答

3

在嘗試任何聰明的事情之前,我覺得它有助於闡明簡單的版本。只使用布爾比較,shift,而事實上我們可以總結布爾列得到Trues的數量,因爲int(True) == 1,我們可以這樣做:

>>> (((df < 1) & (df.shift() > 1)) | ((df > 1) & (df.shift() < 1))).sum() 
0 4 
1 2 
2 5 
3 4 
4 1 
dtype: int64 

與布爾幀看起來像

>>> (df < 1) & (df.shift() > 1) 
        0  1  2  3  4 

1/2/2012 9:18 False False False False False 
1/2/2012 9:19 False False False False False 
1/2/2012 9:20 False False True True False 
1/2/2012 9:21 False False False False False 
1/2/2012 9:22 True True True True True 
1/2/2012 9:23 False False False False False 
1/2/2012 9:24 False False False False False 
1/2/2012 9:25 True False True False False 

和作品我認爲比較容易閱讀。


一個有點滑頭版本 - 雖然,說實話,很可能太滑了自己的好 - 可能是這樣的

>>> s = np.sign(df - 1) 
>>> (s == -s.shift()).sum() 
0 4 
1 2 
2 5 
3 4 
4 1 
dtype: int64 

,但它是很難看到這個做什麼它應該至。 (我寫的,我只有85%的信心。)

+0

你分享的最後一個版本是我的目標..它幫助極大......謝謝。我會測試它,並確保它可以100% – Yantraguru 2014-10-22 04:31:41

相關問題