考虑数据框df
df = pd.DataFrame(np.arange(25).reshape(5, 5), list('abcde'), list('ABCDE'))
df
和两点p0
和p1
p0 = ('a', 'B')
p1 = ('d', 'E')
我想找到从点p0
到p1
的路径上所有元素的总和。
假设
p0
始终位于左侧或同一列p1
p0
始终位于p1
p0
转到p1
我期待值88
答案 0 :(得分: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'
{li> p1[0]
'd'
{li> p0[1]
'B'
{li> p1[1]
'E'