pandas.DataFrame.asof # 数据框。asof (其中,子集= None ) [来源] # 返回最后一行,其中where之前没有任何 NaN 。 获取没有任何 NaN 的最后一行(对于where中的每个元素,如果列表)。如果是 a DataFrame,则最后一行没有 NaN ,仅考虑列的子集(如果不是None) 如果没有好的值,则为 Series 或 DataFrame 的一系列 NaN 值返回 NaN 参数: 其中日期或类似日期的数组返回最后一行之前的日期。 str 的子集或 str 的类似数组,默认None对于 DataFrame,如果不是None,则仅使用这些列来检查 NaN。 返回: 标量、系列或数据帧返回值可以是: 标量:当self是一个系列时,其中是标量 Series:当self是一个 Series 时,其中是一个类数组,或者当self是一个 DataFrame 时,其中是一个标量 DataFrame :当self是一个 DataFrame 时,哪里是一个类似数组的 也可以看看 merge_asof执行 asof 合并。与左连接类似。 笔记 假定日期已排序。如果情况并非如此,则引发。 例子 级数和标量其中. >>> s = pd.Series([1, 2, np.nan, 4], index=[10, 20, 30, 40]) >>> s 10 1.0 20 2.0 30 NaN 40 4.0 dtype: float64 >>> s.asof(20) 2.0 对于序列,其中,返回一个 Series。第一个值是 NaN,因为where的第一个元素位于第一个索引值之前。 >>> s.asof([5, 20]) 5 NaN 20 2.0 dtype: float64 不考虑缺失值。以下是2.0,而不是 NaN,即使 NaN 位于 的索引位置30。 >>> s.asof(30) 2.0 考虑所有列 >>> df = pd.DataFrame({'a': [10., 20., 30., 40., 50.], ... 'b': [None, None, None, None, 500]}, ... index=pd.DatetimeIndex(['2018-02-27 09:01:00', ... '2018-02-27 09:02:00', ... '2018-02-27 09:03:00', ... '2018-02-27 09:04:00', ... '2018-02-27 09:05:00'])) >>> df.asof(pd.DatetimeIndex(['2018-02-27 09:03:30', ... '2018-02-27 09:04:30'])) a b 2018-02-27 09:03:30 NaN NaN 2018-02-27 09:04:30 NaN NaN 考虑单列 >>> df.asof(pd.DatetimeIndex(['2018-02-27 09:03:30', ... '2018-02-27 09:04:30']), ... subset=['a']) a b 2018-02-27 09:03:30 30.0 NaN 2018-02-27 09:04:30 40.0 NaN