我做了一个这样的数据框:
import numpy as np
import pandas as pd
occurrence = np.array([4, 5, 4, 0, 1, 4, 3])
year = np.array([1851,1852,1853,1854,1855,1856,1857])
disaster = {"occur":pd.Series(occur),"year":pd.Series(year)}
df = pd.DataFrame(disaster)
现在我想做一个函数,这样当我给两年的时候,它会给我这两年发生的总和。如果我输入
1851
和1852
,它将显示事件是9
。我写了一个这样的函数,但它显示错误:
def dist(s1,s2):
return (sum (year>=s1 and year< s2))
print dist(s1,s2)
最佳答案
如果你特别想要一个numpy
方法,你可以做类似的事情:
import numpy as np
occurrence= np.array([4, 5, 4, 0, 1, 4, 3])
year = np.array([1851,1852,1853,1854,1855,1856,1857])
year1, year2 = 1851, 1852
mask = (year == year1) | (year == year2)
print occurrence[mask].sum()
注意,如果你想要这两年之间发生的所有事件的总和,你会做一些更像的事情:
mask = (year >= year1) & (year <= year2)
对于
pandas
,同样的方法仍然有效,但正如其他人所指出的,如果您只对这两年(而不是它们之间的间隔)感兴趣,则可以使用isin
方法构建布尔掩码。关于python - 如何在Python中求和两个数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28305302/