【问题标题】:Filling a dataframe column with values from another column, based on values from a third column根据第三列的值,用另一列的值填充数据框列
【发布时间】:2021-08-21 22:51:54
【问题描述】:

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

RefIDPrefix RefIDNumber GO PMID Reactome
GO 12345
PMID 23456
Reactome 34567
GO 45678
GO 56789
PMID 67890

我想填写最后 3 列,如下所示。基本上,根据RefIDPrefix中的值,我想把RefIDNumber中的值放到RefIDPrefix对应的正确列中。

RefIDPrefix RefIDNumber GO PMID Reactome
GO 12345 12345
PMID 23456 23456
Reactome 34567 34567
GO 45678 45678
GO 56789 56789
PMID 67890 67890

我一直在尝试这样做,但一直无法弄清楚如何去做。任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以使用df.pivot() 将列从RefIDPrefix.join() 构建回原来的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 号很可能是正数),我们可以通过微调.fillna() 部分将数字保留为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         
    

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2023-03-14
      • 2021-03-16
      • 2019-01-21
      相关资源
      最近更新 更多