【发布时间】: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等于GEN或EX。然后使用列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 值。这是我不想要的。
非常感谢任何建议!
【问题讨论】: