【问题标题】:Pandas dataframe: slicing column values using second column for slice indexPandas 数据框:使用第二列作为切片索引对列值进行切片
【发布时间】:2015-11-03 20:37:43
【问题描述】:

我正在尝试在 pandas 数据框中创建一列微卫星图案。我有一列给出了主题的长度,另一列给出了整个微卫星。

这是感兴趣的列的示例。

     motif_len    sequence
0    3            ATTATTATTATT
1    4            ATCTATCTATCT
2    3            ATCATCATCATC

我想使用 motif_len 中的值对 sequence 中的值进行切片,以给出每个微卫星的单个重复(motif)。然后,我想将所有这些主题添加为数据框中的第三列,以提供类似的内容。

     motif_len    sequence        motif
0    3            ATTATTATTATT    ATT
1    4            ATCTATCTATCT    ATCT
2    3            ATCATCATCATC    ATC

我尝试了一些没有运气的事情。

>>df['motif'] = df.sequence.str[:df.motif_len]
>>df['motif'] = df.sequence.str[:df.motif_len.values]

两者都是主题列,但所有值都是 NaN。

我想我明白为什么这些不起作用。我将系列/数组作为切片中的上索引而不是 mot_len 列中的值传递。

我还尝试通过迭代每个系列来创建一个系列 有什么想法吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以在 df pass axis=1 上调用 apply 以逐行应用并使用列值对 str 进行切片:

    In [5]:
    df['motif'] = df.apply(lambda x: x['sequence'][:x['motif_len']], axis=1)
    df
    
    Out[5]:
       motif_len      sequence motif
    0          3  ATTATTATTATT   ATT
    1          4  ATCTATCTATCT  ATCT
    2          3  ATCATCATCATC   ATC
    

    【讨论】:

    • 谢谢!提供我正在寻找的确切结果。
    猜你喜欢
    • 2018-03-12
    • 2020-04-12
    • 2021-12-07
    • 1970-01-01
    • 2019-11-14
    • 2014-05-02
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多