【发布时间】:2020-01-19 18:07:43
【问题描述】:
说,我有以下数据框,
df.head()
col1 col2 col3 start end gs
chr1 HAS GEN 11869 14409 DDX
chr1 HAS TRANS 11869 14409 Tp1 psg
chr1 HAS EX 11869 12227 Tp gn
chr1 HAS GEN 12613 12721 FXBZ
chr1 HAS EX 13221 14409 Tpghj
chr1 HAS EX 12010 12057 Tpghj
我感兴趣的专栏是col3 和gs。我有两个条件,
-
col3应该等于EX - 如果
col3等于GEN,则使用列gs中的值
如果col3 =="GEN",我总是希望gs 列的值为gs 列
最后,这就是我的目标。
df_converted.head()
gs chr strt end ex_start ex_end
DDX chr1 11869 14409 11869, 12613,13221 12227,12721,14409
FXBZ chr1 12613 12721 13221,12010 14409,12057
这是我尝试过的,
df.loc[((df.col3 == "EX") | (df.col3 == "GEN")), ['gs', 'start', 'end']].groupby(['gs']).agg(
lambda x: ','.join([str(y) for y in x]))
非常感谢任何建议/帮助!
【问题讨论】:
标签: python pandas group-by aggregate-functions