我有一个如下数据框:
df1:
ix a b c d e
s1 AA AG AG GG AA
s2 DI DD GG GG GG
S3 TT CC TC TT TC
S4 AA AA AA AA AA
S5 CC CC DD CC CC
和另一个像这样的数据框:
df2
ix col1 col2
s1 2 A
s3 4 G
S4 7 A
我想将索引中的所有值替换为df1中的“ XX”,其中索引(s1,s4)在df2的col2中为“ A”。
所以最终的数据帧是这样的:
df1:
ix a b c d e
s1 XX XX XX XX XX
s2 DI DD GG GG GG
S3 TT CC TC TT TC
S4 XX XX XX XX XX
S5 CC CC DD CC CC
任何建议表示赞赏。先感谢您。
df = pd.DataFrame({'ix': {0: 's1', 1: 's2', 2: 'S3', 3: 'S4', 4: 'S5'},
'a': {0: 'AA', 1: 'AG', 2: 'AG', 3: 'GG', 4: 'AA'},
'b': {0: 'DI', 1: 'DD', 2: 'GG', 3: 'GG', 4: 'GG'},
'c': {0: 'TT', 1: 'CC', 2: 'TC', 3: 'TT', 4: 'TC'},
'd': {0: 'AA', 1: 'AA', 2: 'AA', 3: 'AA', 4: 'AA'},
'e': {0: 'CC', 1: 'DD', 2: 'CC', 3: 'CC', 4: 'CC'}})
获取df2
if col2
is的索引值,A
并设置与XX
in匹配的行df1
:
df1.loc[df1.index.isin(df2.index[df2['col2'].eq('A')])] = 'XX'
print (df1)
a b c d e
ix
s1 XX XX XX XX XX
s2 AG DD CC AA DD
S3 AG GG TC AA CC
S4 XX XX XX XX XX
S5 AA GG TC AA CC
设置:
df1 = pd.DataFrame({'ix': {0: 's1', 1: 's2', 2: 'S3', 3: 'S4', 4: 'S5'},
'a': {0: 'AA', 1: 'AG', 2: 'AG', 3: 'GG', 4: 'AA'},
'b': {0: 'DI', 1: 'DD', 2: 'GG', 3: 'GG', 4: 'GG'},
'c': {0: 'TT', 1: 'CC', 2: 'TC', 3: 'TT', 4: 'TC'},
'd': {0: 'AA', 1: 'AA', 2: 'AA', 3: 'AA', 4: 'AA'},
'e': {0: 'CC', 1: 'DD', 2: 'CC', 3: 'CC', 4: 'CC'}}).set_index('ix')
print (df1)
a b c d e
ix
s1 AA DI TT AA CC
s2 AG DD CC AA DD
S3 AG GG TC AA CC
S4 GG GG TT AA CC
S5 AA GG TC AA CC
print (df2)
col1 col2
ix
s1 2 A
s3 4 G
S4 7 A
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句