【问题标题】:Output next row from criteria in Python DataFrame从 Python DataFrame 中的条件输出下一行
【发布时间】:2021-03-02 14:18:38
【问题描述】:

当另一列中的行等于某个值时,我正在尝试找到一种方法来获取 Python DataFrame 中的下一行。在下面的示例中,当 B 列中的行为负数时,我希望获得 A 列中的下一行。最终结果应该是最后一个 DataFrame 中的 C。输出应该是另一种 DataFrame 格式。 我该怎么做?

Test={'A':[1.5,2.3,3.5,4.4, 5.6, 7.8, 8.9], 'B':['Neg', 'Pos', 'Neg', 'Pos', 'Pos', 'Neg','Pos']}
Dataframe=pd.DataFrame(Test)
Dataframe
Test={'A':[1.5,2.3,3.5,4.4, 5.6, 7.8, 8.9], 'B':['Neg', 'Pos', 'Neg', 'Pos', 'Pos', 'Neg','Pos']}
Dataframe=pd.DataFrame(Test)
Dataframe
       A    B
   0    1.5 Neg
   1    2.3 Pos
   2    3.5 Neg
   3    4.4 Pos
   4    5.6 Pos
   5    7.8 Neg
   6    8.9 Pos



         C
   0    2.3
   1    4.4
   2    8.9

【问题讨论】:

    标签: python dataframe row next


    【解决方案1】:

    pandas.Series.shiftreset_index 一起使用:

    df["A"].shift(-1)[df["B"].eq("Neg")].reset_index(drop=True)
    

    输出:

    0    2.3
    1    4.4
    2    8.9
    Name: A, dtype: float64
    

    【讨论】:

      【解决方案2】:

      您可以将df.shiftdf.query 一起使用:

      In [2766]: df['A_shift'] = df.A.shift(-1)
      In [2772]: x = df.query('B == "Neg"').A_shift.to_frame('C')
      
      In [2773]: x
      Out[2773]: 
               C
      0      2.3
      2      4.4
      5      8.9
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 2020-11-02
        • 1970-01-01
        • 2014-01-08
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多