相关文章推荐
狂野的麦片  ·  基于 TMDB ...·  1 周前    · 
有胆有识的椰子  ·  Pandas ...·  1 周前    · 
兴奋的草稿纸  ·  如何从spark scala ...·  昨天    · 
一身肌肉的酱牛肉  ·  Conda 使用 - ...·  3 月前    · 


是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN

Series的对齐运算

1. Series 按行、索引对齐

示例代码:

s1 = pd.Series(range(10, 20), index = range(10))
s2 = pd.Series(range(20, 25), index = range(5))

print('s1: ' )
print(s1)

print('')

print('s2: ')
print(s2)

运行结果:

s1: 
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
dtype: int64

s2:
0 20
1 21
2 22
3 23
4 24
dtype: int64

2. Series的对齐运算

示例代码:

# Series 对齐运算
s1 + s2

运行结果:

0    30.0
1 32.0
2 34.0
3 36.0
4 38.0
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
dtype: float64

DataFrame的对齐运算

1. DataFrame按行、列索引对齐

示例代码:

df1 = pd.DataFrame(np.ones((2,2)), columns = ['a', 'b'])
df2 = pd.DataFrame(np.ones((3,3)), columns = ['a', 'b', 'c'])

print('df1: ')
print(df1)

print('')
print('df2: ')
print(df2)

运行结果:

df1: 
a b
0 1.0 1.0
1 1.0 1.0

df2:
a b c
0 1.0 1.0 1.0
1 1.0 1.0 1.0
2 1.0 1.0 1.0

2. DataFrame的对齐运算

示例代码:

# DataFrame对齐操作
df1 + df2

运行结果:

a    b   c
0 2.0 2.0 NaN
1 2.0 2.0 NaN
2 NaN NaN NaN

填充未对齐的数据进行运算

1. fill_value

使用add,sub,div,mul的同时,通过fill_value指定填充值,未对齐的数据将和填充值做运算

示例代码:

print(s1)
print(s2)
s1.add(s2, fill_value = -1)

print(df1)
print(df2)
df1.sub(df2, fill_value = 2.)

运行结果:

# print(s1)
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
dtype: int64

# print(s2)
0 20
1 21
2 22
3 23
4 24
dtype: int64

# s1.add(s2, fill_value = -1)
0 30.0
1 32.0
2 34.0
3 36.0
4 38.0
5 14.0
6 15.0
7 16.0
8 17.0
9 18.0
dtype: float64


# print(df1)
a b
0 1.0 1.0
1 1.0 1.0

# print(df2)
a b c
0 1.0 1.0 1.0
1 1.0 1.0 1.0
2 1.0 1.0 1.0


# df1.sub(df2, fill_value = 2.)
a b c
0 0.0 0.0 1.0
1 0.0 0.0 1.0
2 1.0 1.0 1.0

算术方法表:

Python数据分析入门(五):Pandas的对齐运算_示例代码