索引是pandas两个重要数据结构Series和DataFrame的重要组成部分,默认的索引是以0开始序列,也可以自定义数据。
因为有索引的存在,Series和DataFrame在进行数据操作的时候,会自动进行数据对齐。
我们来看一个例子:
import pandas as pd
s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
s2 = pd.Series([1, 2, 3, 4], index=['e', 'b', 'c', 'd'])
s3 = s1 + s2
# a NaN
# b 4.0
# c 6.0
# d 8.0
# e NaN
# dtype: float64
从上面可知,s1和s2具有不同的索引,s1 + s2
并不是Series中的数据按序相加,而是自动按照索引进行对齐,有时候我们可以利用这个特性进行数据处理,有时候需要注意这种特性会产生和预期不同的结果。
如果我们需要对s1和s2按序相加要怎么办? 这个时候需要对索引进行重置成默认序列索引,在进行相加。
s1.reset_index(drop=True) + s2.reset_index(drop=True)
# 0 2
# 1 4
# 2 6
# 3 8
# dtype: int64
上面可知,通过reset_index
将索引重置到0到3, 相加就是按序相加。
reset_index默认会将索引作为新的一列增加到数据中, 如果你不需要索引可以指定drop=True
s1.reset_index()
# index 0
# 0 a 1
# 1 b 2
# 2 c 3
# 3 d 4
希望对你有帮助。