H5W3
当前位置:H5W3 > 其他技术问题 > 正文

Pandas重新索引介绍和用法

Pandas重新索引的主要任务是使DataFrame与具有可选填充逻辑的新索引保持一致, 并将NA / NaN放置在先前索引中不存在值的位置。它返回一个新对象, 除非产生与当前索引等效的新索引, 并且copy的值为False。

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

句法:

DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)

参数:

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

index, columns:它也是一个可选参数, 它引用新标签或索引。通常, 它倾向于使用索引对象来避免重复数据。

axis:它也是以轴为目标的可选参数, 可以是轴名称或数字。

方法:这也是一个可选参数, 用于填充重新索引的DataFrame中的孔。它只能以单调递增/递减顺序应用于DataFrame或Series。

无:这是一个默认值, 不会填补空白。

填充/填充:用于将最后一个有效观察向前传播到下一个有效观察。

回填/填充:要填充空白, 它使用下一个有效观察值。

最接近:为了填补空白, 它使用下一个有效观察值。

复制:它的默认值为True, 即使传递的索引相同, 也返回一个新对象作为布尔值。

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

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

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

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

返回值:

它返回重新索引的DataFrame。

范例1:

下面的示例显示reindex()函数为数据帧重新编制索引的工作。在新索引中, 默认值在新索引中被指定为NaN, 而在DataFrame中没有相应的记录。

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

import pandas as pd

# Create dataframe
info = pd.DataFrame({"P":[4, 7, 1, 8, 9], "Q":[6, 8, 10, 15, 11], "R":[17, 13, 12, 16, 14], "S":[15, 19, 7, 21, 9]}, index =["Parker", "William", "Smith", "Terry", "Phill"]) 

# Print dataframe
info

输出

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()函数为数据帧重新编制索引。

# reindexing with new index values 
info.reindex(["A", "B", "C", "D", "E"])

输出

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参数填写缺少的值。

# filling the missing values by 100 
info.reindex(["A", "B", "C", "D", "E"], fill_value =100)

输出

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()函数为列轴重新编制索引的工作。

# importing pandas as pd
importpandas as pd
  
# Creating the first dataframe  
info1 =pd.DataFrame({"A":[1, 5, 3, 4, 2], "B":[3, 2, 4, 3, 4], "C":[2, 2, 7, 3, 4], "D":[4, 3, 6, 12, 7]}) 
# reindexing the column axis with 
# old and new index values 
info.reindex(columns =["A", "B", "D", "E"])

输出

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值。

# reindex the columns 
# fill the missing values by 25 
info.reindex(columns =["A", "B", "D", "E"], fill_value =37)

输出

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

本文地址:H5W3 » Pandas重新索引介绍和用法

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址