在工作中有时需要对某个表的内容进行更新,可以使用pandas进行更新。
- 待更新内容data1及获取更新内容的目标表data2
import pandas as pd
import numpy as np
data1 = pd.DataFrame(np.arange(0,25).reshape(5,5),columns= list('abcde'),index=list('mnopq'))
data2 = pd.DataFrame(np.arange(30,46).reshape(4,4),columns= list('abcd'),index=list('mnop'))
data2.loc[:,'a'] = np.arange(0,16,5)
>>> data1
a b c d e
m 0 1 2 3 4
n 5 6 7 8 9
o 10 11 12 13 14
p 15 16 17 18 19
q 20 21 22 23 24
>>> data2
a b c d
m 0 31 32 33
n 5 35 36 37
o 10 39 40 41
p 15 43 44 45
- 如果data2中的a列值与data1的相同且data2中的b列值不为空,则将data1的b列更新为data2的b列值.
for r1 in range(data1.shape[0]):
for r2 in range(data2.shape[0]):
#只有data2的值不为空时才更新data1
if (data1.iloc[r1]['a'] == data2.iloc[r2]['a']) and pd.isna(data2.iloc[r2]['b']) != True:
#下面不能写为data1.iloc[r1]['b'],这样写数据不会更新
data1.iloc[r1,data1.columns == 'b'] = data2.iloc[r2,data1.columns == 'b']
>>> data1
a b c d e
m 0 31 2 3 4
n 5 35 7 8 9
o 10 39 12 13 14
p 15 43 17 18 19
q 20 21 22 23 24