两个dataframe更新,可以用update来进行,update是使用index来匹配的。
>>> dfa = pd.DataFrame([(chr(65+x),x) for x in range(5)],columns=['LETTER','NUMBER'])
>>> dfa
LETTER NUMBER
0 A 0
1 B 1
2 C 2
3 D 3
4 E 4
>>> dfb = pd.DataFrame([('A', 101), ('C', 103), ('E', 105)],columns=['LETTER','NUMBER'])
>>> dfb
LETTER NUMBER
0 A 101
1 C 103
2 E 105
用dfb的值,去更新(代替)dfa中对应的值
先将两个要匹配的列转成index,update是依靠index进行。
>>> dfa.set_index('LETTER',inplace=True)
>>> dfa
NUMBER
LETTER
A 0
B 1
C 2
D 3
E 4
>>> dfb.set_index('LETTER',inplace=True)
>>> dfb
NUMBER
LETTER
A 101
C 103
E 105
直接使用update来更新
>>> dfa.update(dfb)
>>> dfa
NUMBER
LETTER
A 101.0
B 1.0
C 103.0
D 3.0
E 105.0
可以用reset_index,将LETTER再转回列。
>>> dfa.reset_index(inplace=True)
>>> dfa
LETTER NUMBER
0 A 101.0
1 B 1.0
2 C 103.0
3 D 3.0
4 E 105.0
若需要匹配的是多列,就将多列转成index
df.set_index(['A','B'],inplace=True)