python pandas 对series和dataframe的重置索引reindex方法

  • Post category:Python

当在Pandas中处理Series和DataFrame数据时,可能需要重新定义行(Series)或行列(DataFrame)的索引。这时,可以使用reindex()方法。reindex()方法根据指定的顺序重新排列现有的索引,或者返回一个新的数据对象,新的索引由调用者提供。

Series的reindex()方法

语法:

s.reindex(index=, fill_value=)
  • index:新列表顺序或者新的确定性索引;
  • fill_value:缺失值所用的标量。

示例1:

import pandas as pd

s = pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd'])
print("之前的Series对象:\n", s)

# 重新排列Series对象
s = s.reindex(['b', 'c', 'd', 'a'])
print("\n重新排列后的Series对象:\n", s)

# 设定fill_value
s = s.reindex(['a', 'b', 'c', 'd', 'e'], fill_value=0)
print("\n设定fill_value后的Series对象:")
print(s)

运行结果:

之前的Series对象:
 a    1
b    2
c    3
d    4
dtype: int64

重新排列后的Series对象:
 b    2
c    3
d    4
a    1
dtype: int64

设定fill_value后的Series对象:
a    1
b    2
c    3
d    4
e    0
dtype: int64

DataFrame的reindex()方法

语法:

df.reindex(index=, columns=, fill_value=)
  • index:新行顺序;
  • columns:新列顺序;
  • fill_value:缺失值所用的标量。

示例2:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C':[7, 8, 9]}, index=['a', 'b', 'c'])
print("之前的DataFrame对象:\n", df)

# 更改A,B,C的位置 & 更改a,b,c的位置
df = df.reindex(index=['c', 'b', 'a'], columns=['C', 'A', 'B'])
print("\n更改A,B,C和a,b,c的位置的DataFrame对象:\n", df)

# 设定fill_value
df = df.reindex(index=['c', 'd', 'b', 'a'], columns=['C', 'A', 'B', 'D'], fill_value=0)
print("\n设定fill_value后的DataFrame对象:")
print(df)

运行结果:

之前的DataFrame对象:
   A  B  C
a  1  4  7
b  2  5  8
c  3  6  9

更改A,B,C和a,b,c的位置的DataFrame对象:
   C  A  B
c  9  3  6
b  8  2  5
a  7  1  4

设定fill_value后的DataFrame对象:
   C  A  B  D
c  9  3  6  0
d  0  0  0  0
b  8  2  5  0
a  7  1  4  0

以上就是使用reindex()方法对Series和DataFrame的索引重置的完整攻略。