看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 提供了 first()
和 last()
方法,根据词义可以理解为第一个数据,不过要注意的是它在不同的数据类型上所执行的功能是不一样的。接下来,我们介绍几个主要数据对象中的 first()
应用功能。与之对应的函数是 last()
。
弃用警告
自2.1版本起已弃用first()
和 last()
方法已弃用,并将在未来版本中删除。请使用.loc创建掩码和筛选器。
对于 DataFrame 来说,first()
是基于日期偏移选择时间序列数据的初始时段, last()
是最后时段 。当使用日期作为索引(DatetimeIndex)的 DataFrame 时,此函数可以基于日期偏移选择前几行。如果索引不是时间序列,刚会报错。
DataFrame.first(offset)
DataFrame.last(offset)
参数:
返回:
Raises:
以下是相关案例:
i = pd.date_range('2018-04-09', periods=4, freq='2D')
ts = pd.DataFrame({'A': [1, 2, 3, 4]}, index=i)
ts
'''
A
2018-04-09 1
2018-04-11 2
2018-04-13 3
2018-04-15 4
'''
获取前3天的行:
ts.first('3D')
'''
A
2018-04-09 1
2018-04-11 2
'''
请注意,返回了前 3 个日历日的数据,而不是数据集中观察到的前 3 天的数据,因此没有返回 2018-04-13 的数据。
同理,获取后3天的行:
A
2018-04-13 3
2018-04-15 4
Series.first(offset)
和 Series.last(offset)
的逻辑 与 DataFrame 对象上的同名方法一致,也是需要索引为 DatetimeIndex 类型。
GroupBy 分组对象应用 first()
时,计算分组内的不为 Nan 的第一组值。
GroupBy.first(numeric_only=False, min_count=-1)
GroupBy.last(numeric_only=False, min_count=-1)
参数:
返回:
案例:
df = pd.DataFrame({
'id': [111, 222, 111, 222, 333],
'name': ['a', None, None, 'b', None]
})
df
'''
id name
0 111 a
1 222 None
2 111 None
3 222 b
4 333 None
'''
# 路过空值
df.groupby('id').first()
'''
name
id
111 a
222 b
333 None
'''
df.groupby('id').last()
'''
name
id
111 a
222 b
333 None
'''
重采样对象 Resampler
的逻辑与参数与 GroupBy.first
等相同:
Resampler.first(_method='first', min_count=0, *args, **kwargs)
Resampler.last(_method='last', min_count=0, *args, **kwargs)
参数:
以上是语法。
first() 函数支持以下数据对象:
与 first()
类似,last()
基于日期偏移选择时间序列的最后时段。相关的方法是:
GroupBy.nth
中的 nth(n)
每组取第 n 行。head(n)
和 tail(n)
表示前后 n 个数据。更新时间:2024-08-01 20:42:07 标签:pandas first 时序 函数