当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas DataFrame asof方法用法及代码示例


Pandas DataFrame.asof(~) 方法返回不包含 NaN 的最后一行。

参数

1.where | datearray-likedates

您要检查的索引值。通常,这将是日期列表。检查下面的示例以进行说明。

2. subset | stringarray-likestring | optional

检查 NaN 时要考虑的列的标签。默认情况下,会考虑所有列。

返回值

如果 where 是标量,则返回 Series。否则,返回DataFrame

警告

源 DataFrame 的索引必须进行排序,否则会引发错误。

例子

基本用法

考虑以下 DataFrame :

df = pd.DataFrame({"A":[3,4,pd.np.NaN,2], "B":[5,6,7,8]}, index=[10,20,30,40])
df



    A    B
10  3.0  5
20  4.0  6
30  NaN  7
40  2.0  8

请注意 DataFrame 的索引是如何排序的。这是使用该方法的前提条件。

要获取索引值 35(含)之前没有 NaN 的最后一行:

df.asof(35)



A    4.0
B    6.0
Name: 35, dtype: float64

在这里,我们获得第二行(索引为 20 的行)。索引值为 40 的第 4 行被忽略,因为它超出了 35 的指定索引值。

日期作为索引

考虑以下带有 DatetimeIndex 的 DataFrame :

my_index = pd.DatetimeIndex(["2020-12-24", "2020-12-25", "2020-12-26", "2020-12-27"])
df = pd.DataFrame({"A":[3,4,pd.np.NaN,2], "B":[5,6,7,8]}, index=my_index)
df



            A    B
2020-12-24  3.0  5
2020-12-25  4.0  6
2020-12-26  NaN  7
2020-12-27  2.0  8

这里,索引值是日期,同样是经过排序的。

要获取两个特定日期(含)之前不带 NaN 的最后一行:

my_where = pd.DatetimeIndex(["2020-12-24", "2020-12-26"])
df.asof(my_where)



            A    B
2020-12-24  3.0  5.0
2020-12-26  4.0  6.0

请注意以下事项:

  • 第二行返回 2020-12-25 的行值。这是因为 2020-12-26 的行值包含 NaN ,因此下一个候选者是 2020-12-25 的行值,其中不包含任何 NaN

  • 返回的DataFrame的新索引值是您在参数中指定的值。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | asof method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。