当在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的索引重置的完整攻略。