基于第三列中的值,使用另一列中的值填充dataframe列

2024-09-22 16:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,如下所示。我根据RefIDPrefix列中的唯一值创建了最后3列

^{tb1}$

我想像下面这样填写最后3列。基本上,基于RefIDPrefix中的值,我想获取RefIDNumber中的值,并将其放入对应于RefIDPrefix的正确列中

^{tb2}$

我已经试着这么做了一段时间,但还没有弄明白如何去做。任何帮助都将不胜感激


Tags: 数据tb2tb1refidnumberrefidprefix
1条回答
网友
1楼 · 发布于 2024-09-22 16:23:31

您可以使用^{}RefIDPrefix^{}将列构建回原始df

df.join(df.pivot(columns='RefIDPrefix', values='RefIDNumber').fillna(''))

输出:

  RefIDPrefix  RefIDNumber       GO     PMID Reactome
0          GO        12345  12345.0                  
1        PMID        23456           23456.0         
2    Reactome        34567                    34567.0
3          GO        45678  45678.0                  
4          GO        56789  56789.0                  
5        PMID        67890           67890.0         

编辑

对于新列中数字的显示格式(当前显示为带小数点的float数字),如果RefIDNumber列实际上是字符串,则新列中的数字也将是字符串,并且没有小数点(如整数)

但是,如果RefIDNumber是数字格式(ID号很可能是正数),我们可以通过微调^{}部分将数字保留为integer,如下所示:

df.join(df.pivot(columns='RefIDPrefix', values='RefIDNumber').fillna(-1, downcast='infer').replace(-1, ''))

输出:

  RefIDPrefix  RefIDNumber     GO   PMID Reactome
0          GO        12345  12345                
1        PMID        23456         23456         
2    Reactome        34567                  34567
3          GO        45678  45678                
4          GO        56789  56789                
5        PMID        67890         67890         

相关问题 更多 >