【问题标题】:Populating the values of a column based on multiple conditions to a new column of a dataframe根据多个条件将列的值填充到数据框的新列
【发布时间】:2019-09-19 18:22:47
【问题描述】:

假设我有以下数据框,

df.head()
col1    col2    col3    start   end     gs
chr1    HAS     GEN     11869   14409   DDX
chr1    HAS     TRANS   11869   14409   NaN
chr1    HAS     EX      11869   12227   NaN
chr1    HAS     GEN     12613   12721   FXBZ
chr1    HAS     EX      13221   14409   NaN
chr1    HAS     EX      12010   12057   NaN

现在,我需要根据两个条件添加一个新列,并且必须从一个列中使用值。

例如,条件是。

  • 如果col3 等于GENEX。然后使用列 gs 中的值添加一个新列 col7
  • gs 中的值必须始终是col3 等于GEN 时的值。那绝不是NaNs

最后,我的目标是让我的数据框如下,

col1    col2  col3   start   end     gs     col7
chr1    HAS   GEN    11869   14409   DDX    DDX
chr1    HAS   EX     11869   12227   NaN    DDX
chr1    HAS   TRANS  11869   14409   no
chr1    HAS   GEN    12613   12721   FXBZ   FXBZ
chr1    HAS   EX     13221   14409   NaN    FXBZ
chr1    HAS   EX     12010   12057   NaN    FXBZ

我尝试使用lambda

df.apply(
    lambda row: row['gs'] if (row['col3'] =="EX" and row['gs'] !=NaN) else "no",
    axis=1)

但是,我无法将 gs 列中的值填充到新列中。它设置NaN 值。这是我不想要的。

非常感谢任何建议!

【问题讨论】:

    标签: python pandas lambda


    【解决方案1】:

    我相信您可以将numpy.whereSeries.isin 结合使用,并在gs 列中向前填充缺失值:

    df['col7'] = np.where(df['col3'].isin(['GEN','EX']), df['gs'].ffill(), 'no')
    print (df)
       col1 col2   col3  start    end    gs  col7
    0  chr1  HAS    GEN  11869  14409   DDX   DDX
    1  chr1  HAS     EX  11869  14409   NaN   DDX
    2  chr1  HAS  TRANS  11869  12227   NaN    no
    3  chr1  HAS    GEN  12613  12721  FXBZ  FXBZ
    4  chr1  HAS     EX  13221  14409   NaN  FXBZ
    5  chr1  HAS     EX  12010  12057   NaN  FXBZ
    

    详情

    print (df['gs'].ffill())
    0     DDX
    1     DDX
    2     DDX
    3    FXBZ
    4    FXBZ
    5    FXBZ
    Name: gs, dtype: object
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2023-03-21
      相关资源
      最近更新 更多