重新索引

2024 年 8 月 29 日 | 4 分钟阅读

Pandas 重新索引的主要任务是根据新的索引调整 DataFrame,并具有可选的填充逻辑,并在前一个索引中不存在值的位置放置 NA/NaN。它返回一个新对象,除非新索引被生成为与当前索引等效,并且copy的值变为False

重新索引用于更改 DataFrame 的行和列的索引。我们可以使用 reindex() 方法重新索引单个或多个行。新索引中的默认值如果不在 DataFrame 中,则分配为 NaN。

语法

参数

labels: 这是一个可选参数,指的是新的标签或索引,以符合“axis”指定的轴。

index,columns: 这也是一个可选参数,指的是新的标签或索引。它通常更喜欢索引对象以避免重复数据。

axis: 也是一个可选参数,用于定位轴,可以是轴名称或数字。

method: 也是一个可选参数,用于填充重新索引的 DataFrame 中的空洞。它只能应用于具有单调递增/递减顺序的 DataFrame 或 Series。

None: 这是默认值,不填充间隙。

pad / ffill: 它用于将最后一个有效观测值向前传播到下一个有效观测值。

backfill / bfill: 为了填补空白,它使用下一个有效观测值。

nearest: 为了填补空白,它使用下一个有效观测值。

copy: 其默认值为 True,并返回一个新对象作为布尔值,即使传递的索引相同。

level: 它用于跨级别广播,并在传递的 MultiIndex 级别上匹配索引值。

fill_value: 它的默认值为 np.NaN,用于填充现有的缺失(NaN)值。它需要任何新元素才能成功进行 DataFrame 对齐,并在计算前使用该值。

limit: 它定义了要向前或向后填充的连续元素的最大数量。

tolerance: 这也是一个可选参数,用于确定原始标签和新标签之间用于不精确匹配的最大距离。在匹配位置,索引的值应该最符合等式 abs(index[indexer] ? target) <= tolerance。

返回值

它返回重新索引的 DataFrame。

示例 1

下面的示例显示了 reindex() 函数的工作原理,用于重新索引数据帧。在新索引中,默认值被分配为 NaN,在新索引中,数据帧中没有相应的记录。

注意:我们可以使用 fill_value 来填充缺失值。

输出

         A    B    D    E
Parker	NaN  NaN  NaN  NaN
William	NaN  NaN  NaN  NaN
Smith	NaN  NaN  NaN  NaN
Terry	NaN  NaN  NaN  NaN
Phill	NaN  NaN  NaN  NaN

现在,我们可以使用 dataframe.reindex() 函数重新索引数据帧。

输出

	P	Q	R	S
A	NaN	NaN	NaN	NaN
B	NaN	NaN	NaN	NaN
C	NaN	NaN	NaN	NaN
D	NaN	NaN	NaN	NaN
E	NaN	NaN	NaN	NaN

请注意,新索引填充了 NaN 值。我们可以使用 fill_value 参数填充缺失值。

输出

	P	Q	R	S
A	100	100	100	100
B	100	100	100	100
C	100	100	100	100
D	100	100	100	100
E	100	100	100	100

示例 2

此示例显示了 reindex() 函数重新索引列轴的工作原理。

输出

        A     B    D    E
Parker	NaN  NaN  NaN  NaN
William	NaN  NaN  NaN  NaN
Smith	NaN  NaN  NaN  NaN
Terry	NaN  NaN  NaN  NaN
Phill	NaN  NaN  NaN  NaN

请注意,重新索引后新列中存在 NaN 值,我们可以使用函数的参数 fill_value 来删除 NaN 值。

输出

        A   B   D   E
Parker	37  37  37  37
William	37  37  37  37
Smith	37  37  37  37
Terry	37  37  37  37
Phill	37  37  37  37

下一主题重置索引