2016-09-16 74 views
0

考慮數據框一個數據幀的曼哈頓和df找到給出兩點

df = pd.DataFrame(np.arange(25).reshape(5, 5), list('abcde'), list('ABCDE')) 
df 

enter image description here

和兩點p0p1

p0 = ('a', 'B') 
p1 = ('d', 'E') 

我想找到所有的總和沿着從點p0p1的路徑的元素。
假設

  • p0總是向左或同一列p1
  • p0始終高於或同一行p1
  • 路徑應該先往下走,然後直接從p0p1

enter image description here

我期待我認爲你可以總結下來的第一列並在該行的88

回答

3

的值。

s1 = df.ix['a':'d', 'B'].sum() 
s2 = df.ix['d', 'B':'E'].sum() 
print s1 + s2 - df.ix['d', 'B'] 

或者,如果你願意,你可以這樣做::

s2 = df.ix['d', 'B':'E'][1:].sum() 
print s1 + s2 

由於這將切下的元素纔會有那麼你需要刪除一個這樣的雙數左下方項目被重複計算...

也許熊貓大師可以想出一個更高效或更聰明的方式來做到這一點 - 但這似乎工作確定。我被騙了一點點,硬編碼的點,但它應該是很容易解開的是 - 剛剛替補:

  • p0[0]'a'
  • p1[0]'d'
  • p0[1]'B'
  • p1[1]'E'
+0

可能編輯:你可以做S2 = df.ix [」 b','C':'E'] [1:]。sum(),然後跳過df.ix ['d','B']的減法 –

+0

@BobHaffner - 是的,看起來好像應該工作:-) – mgilson

相關問題