Pandas 重新索引

Pandas 重新索引 首页 / Pandas入门教程 / 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)

参数

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

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

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

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

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

level                              -  在传递的MultiIndex级别上匹配索引值。

fill_value                    -   其默认值为np.NaN,用于填充现有的缺失(NaN)值。

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

tolerance                   -  也是可选参数,用于确定不精确匹配的原始标签和新标签之间的最大距离。

返回值

它返回重新索引的DataFrame。

无涯教程网

范例1:

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

Note: 无涯教程可以使用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", "Learnfk", "Terry", "Phill"]) 

# Print dataframe
info

输出:

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

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

# 用新的索引值重新索引
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参数填写缺少的值。

# 将缺失值填充 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
  
# 创建第一个数据框
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]}) 
# 重新索引axis 新旧索引值
info.reindex(columns =["A", "B", "D", "E"])

输出:

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

请注意,重新编制索引后,新列中存在NaN值,无涯教程可以在函数中使用参数fill_value来删除NaN值。

# 重新索引列
# 用 37 填充缺失值
info.reindex(columns =["A", "B", "D", "E"], fill_value =37)

输出:

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

程序员进阶攻略 -〔胡峰〕

如何做好一场技术演讲 -〔极客时间〕

浏览器工作原理与实践 -〔李兵〕

分布式数据库30讲 -〔王磊〕

成为AI产品经理 -〔刘海丰〕

如何读懂一首诗 -〔王天博〕

讲好故事 -〔涵柏〕

搞定音频技术 -〔冯建元 〕

B端体验设计入门课 -〔林远宏(汤圆)〕

好记忆不如烂笔头。留下您的足迹吧 :)