dataframe.reindex()

Pandas dataframe.reindex()函数使用可选的填充逻辑使DataFrame符合新索引,将NA /NaN放置在先前索引中没有值的位置。除非新索引等于当前索引并且copy = False,否则将生成一个新对象。

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

 

参数:
labels:新标签/索引使“ axis”指定的轴与之一致。
index, columns:要符合的新标签/索引。最好是一个Index对象,以避免重复数据
axis:轴到目标。可以是轴名称(“索引”,“列”)或数字(0、1)。
method:{None,“ backfill” /“ bfill”,“ pad” /“ ffill”,“ nearest”},可选
copy:即使传递的索引相同,也返回一个新对象
level:在一个级别上广播,在传递的MultiIndex级别上匹配索引值
fill_value:在计算之前,请使用此值填充现有的缺失(NaN)值以及成功完成DataFrame对齐所需的任何新元素。如果两个对应的DataFrame位置中的数据均丢失,则结果将丢失。
limit:向前或向后填充的最大连续元素数
tolerance:不完全匹配的原始标签和新标签之间的最大距离。匹配位置处的索引值最满足方程abs(index [indexer]-target)

返回:重新索引:DataFrame

范例1:采用reindex()用于重新索引 DataFrame 的函数。默认情况下,新索引中在 DataFrame 中没有对应记录的值被分配为NaN。
注意:我们可以通过将值传递给关键字fill_value来填充缺失的值。

# importing pandas as pd 
import pandas as pd 
  
# Creating the dataframe  
df = 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]}, 
                   index =["first", "second", "third", "fourth", "fifth"]) 
  
# Print the dataframe 
df
 

让我们使用dataframe.reindex()重新索引 DataFrame 的功能

# reindexing with new index values 
df.reindex(["first", "dues", "trois", "fourth", "fifth"])
 

输出:

注意输出,新索引填充为NaN值,我们可以使用参数fill_value填写缺少的值

# filling the missing values by 100 
df.reindex(["first", "dues", "trois", "fourth", "fifth"], fill_value = 100)
 

输出:


范例2:采用reindex()重新索引列轴的功能

# importing pandas as pd 
import pandas as pd 
  
# Creating the first dataframe  
df1 = 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 
df.reindex(columns =["A", "B", "D", "E"])
 

输出:

注意,我们有NaN重新编制索引后,新列中的值会发生变化,我们可以解决重新编制索引时遗漏的值。通过论证fill_value 功能。

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

输出:

posted @ 2021-04-17 15:42  正在学Python  阅读(5448)  评论(0编辑  收藏  举报