繁体   English   中英

Pandas:根据两个不同列的映射更改列中的值

[英]Pandas : change values in column based on a mapping of two different columns

我有这个数据框:

    id      result.value.text       result.value.labels result.id   result.from_id  result.to_id
0   793     skin melanoma           indication          5jSiC_n3IM  NaN              NaN
1   793     proteinase              protein             Lso-iCCHar  NaN              NaN
2   793     plasminogen activator   protein             _17D_kE5zf  NaN              NaN
3   793     NaN                     NaN                 NaN         5jSiC_n3IM       Lso-iCCHar
4   793     NaN                     NaN                 NaN         5jSiC_n3IM       _17D_kE5zf

我想更改result.from_idresult.to_id列的值,而不是使用 result.id 列的值, result.value.textresult.id列的相应值替换它们。

想要的输出

    id      result.value.text       result.value.labels result.from_id  result.to_id
0   793     skin melanoma           indication          NaN                 NaN
1   793     proteinase              protein             NaN                 NaN
2   793     plasminogen activator   protein             NaN                 NaN
3   793     NaN                     NaN                 skin melanoma   proteinase
4   793     NaN                     NaN                 skin melanoma   plasminogen activator

有人可以帮忙吗?

创建字典,删除每个result.id, result.value.text中的缺失行,然后映射两列:

d = df.dropna(subset=['result.id','result.value.text']).set_index('result.id')['result.value.text'].to_dict()

cols = ['result.from_id','result.to_id']
df[cols] = df[cols].apply(lambda x: x.map(d))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM