Python pandas.DataFrame.reindex_like函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.reindex_like方法的使用。

DataFrame.reindex_like(self: ~FrameOrSeries, other, method: Union[str, NoneType] = None, copy: bool = True, limit=None, tolerance=None) → ~FrameOrSeries       [source]

返回具有匹配索引的对象作为其他对象。

使对象在所有轴上都具有相同的索引。可选的填充逻辑,将NaN放在上一个索引中没有值的位置。除非新索引等于当前索引并且copy=False,否则将生成一个新对象。

参数:

other:相同数据类型的Object

它的行和列索引用于定义此对象的新索引。

method

{None, ‘backfill’/’bfill’, ‘pad’/’ffill’, ‘nearest’}

方法,用于填充重新索引的数据格式中的漏洞。

请注意:这只适用于索引为单调递增/递减的DataFrames/Series

1)None (default): 不填补空白。

2)pad / ffill: 将上一个有效观察值传播到下一个有效观察值。

3)backfill / bfill: 使用下一个有效观察值来填补空白。

4)nearest: 使用最近的有效观测值来填补空白。

copybool,默认为True

即使传递的索引相同,也返回一个新对象。

limitint, 默认为 None

填写不完全匹配的连续标签的最大数量。

tolerance:可选

最大距离之间的原始和新标签不准确的匹配。

匹配位置的索引值最满足等式

abs(index[indexer] - target) <= tolerance

tolerance可以是标量值,它对所有值应用相同的tolerance,

也可以是类似于列表的值,它对每个元素应用可变tolerance。

类列表包括列表、元组、数组、序列,并且必须与索引大小相同,

其dtype必须与索引的类型完全匹配。

0.21.0版本中新增内容:(list-like tolerance)

返回值:

Series 或 DataFrame

与调用者相同的类型,但每个轴上的索引均已更改。

Notes

与调用.reindex(index=other.index, columns=other.columns,...)相同。

例子

>>> df1 = pd.DataFrame([[24.3, 75.7, 'high'],
...                     [31, 87.8, 'high'],
...                     [22, 71.6, 'medium'],
...                     [35, 95, 'medium']],
...                    columns=['temp_celsius', 'temp_fahrenheit',
...                             'windspeed'],
...                    index=pd.date_range(start='2014-02-12',
...                                        end='2014-02-15', freq='D'))
>>> df1
            temp_celsius  temp_fahrenheit windspeed
2014-02-12          24.3             75.7      high
2014-02-13          31.0             87.8      high
2014-02-14          22.0             71.6    medium
2014-02-15          35.0             95.0    medium
>>> df2 = pd.DataFrame([[28, 'low'],
...                     [30, 'low'],
...                     [35.1, 'medium']],
...                    columns=['temp_celsius', 'windspeed'],
...                    index=pd.DatetimeIndex(['2014-02-12', '2014-02-13',
...                                            '2014-02-15']))
>>> df2
            temp_celsius windspeed
2014-02-12          28.0       low
2014-02-13          30.0       low
2014-02-15          35.1    medium
>>> df2.reindex_like(df1)
            temp_celsius  temp_fahrenheit windspeed
2014-02-12          28.0              NaN       low
2014-02-13          30.0              NaN       low
2014-02-14           NaN              NaN       NaN
2014-02-15          35.1              NaN    medium
推荐阅读
cjavapy编程之路首页