我做了一个这样的数据帧:
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
。在
我写了一个这样的函数,但它显示了错误:
^{pr2}$
您需要使用
&
而不是and
。这意味着你的职能应该是:然后你有:
^{2}$1851 <= df.year
和{and
不能像我们所希望的那样处理这些对象——它实际上是在每个系列上调用bool
,这会导致错误。另一方面,&
将执行元素和,当两个序列都是True
时返回{您还可能会发现
isin()
对于计算给定日期列表的值很有用。例如:或者:
^{2}$对于日期范围,创建范围列表似乎比使用
&
更有效:如果您只想使用
numpy
方法,您可以执行类似的操作:请注意,如果您想要这两年之间发生的所有事件的总和,您可以做如下操作:
^{2}$对于
pandas
,同样的方法仍然有效,但是正如其他人所指出的那样,如果您只对这两年(而不是它们之间的间隔)感兴趣的话,使用isin
方法构建布尔掩码有更有效的方法。在相关问题 更多 >
编程相关推荐