代码之家  ›  专栏  ›  技术社区  ›  Jawap

将偶数行和奇数行分成两列[关闭]

  •  0
  • Jawap  · 技术社区  · 6 年前

    我有一个简单的(稀疏的)时间序列:

    In[4]: df.head(8)
    Out[4]: 
                                type
    2016-09-22 04:13:00+00:00      1
    2016-09-22 06:13:00+00:00      2
    2016-09-22 06:26:00+00:00      1
    2016-09-22 06:47:00+00:00      2
    2016-09-22 09:16:00+00:00      1
    2016-09-22 12:02:00+00:00      2
    2016-09-22 16:26:00+00:00      1
    2016-09-22 16:58:00+00:00      2
    

    类型列总是交替使用1和2。可以假设第一种类型是1。

    我只想考虑类型为2的行。另外,我想添加一个新列“start”,它包含前一行(类型1)的索引(时间戳):

    In[4]: df.head(4)
    Out[4]: 
                                type                      start
    2016-09-22 06:13:00+00:00      2  2016-09-22 04:13:00+00:00
    2016-09-22 06:47:00+00:00      2  2016-09-22 06:26:00+00:00
    2016-09-22 12:02:00+00:00      2  2016-09-22 09:16:00+00:00
    2016-09-22 16:58:00+00:00      2  2016-09-22 16:26:00+00:00
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   user3483203    6 年前

    既然你知道值是交替的,既然我们知道第一个值 1 ,我们可以在这里使用简单的切片,以及 assign :

    df[1::2].assign(start=df[::2].index)
    

                         type               start
    2016-09-22 06:13:00     2 2016-09-22 04:13:00
    2016-09-22 06:47:00     2 2016-09-22 06:26:00
    2016-09-22 12:02:00     2 2016-09-22 09:16:00
    2016-09-22 16:58:00     2 2016-09-22 16:26:00
    

    如果这是 担保:

    df.loc[df.type.eq(2)].assign(start=df.loc[df.type.eq(1)].index)
    
        2
  •  2
  •   Raunaq Jain    6 年前

    df1 = df[df.type == 2]
    

    然后,添加一个索引类型为1的列

    df1['start'] = df[df.type == 1].index