查找满足条件的连续元素熊猫

时间:2020-05-04 09:24:05

标签: python pandas

我有一个简单的数据框,其中包含“季度”和“增长”列,我想找到连续的条目为负数时的第一个实例。

df = pd.DataFrame({
'Quarters': ['2000q1','2000q2','2000q3','2OOOq4','2001q1','2001q2','2001q3'],
'Growth': [np.nan,10,20,-5,-6,10,-8]})

(第一个条目是NAN,因为“增长”来自计算条目之间的差)。

我希望代码输出“ 2001q1”,这是两个连续负增长的首次出现。谢谢!

3 个答案:

答案 0 :(得分:3)

如果始终存在,至少有一对&进行2位掩码按位与,第二个就像首先仅将值移动Series.shift一样,然后得到第一个{{ 1}}按Series.idxmax,然后按DataFrame.loc选择:

True

如果不确定是否存在1对,可以使用a = df.loc[(df['Growth'].lt(0) & df['Growth'].shift().lt(0)).idxmax(), 'Quarters'] print (a) 2001q1 next,如果不匹配,请指定默认值:

iter

更改的数据样本:

mask = (df['Growth'].lt(0) & df['Growth'].shift().lt(0))
a =  next(iter(df.loc[mask, 'Quarters']), 'no exist 2 negative values')
print (a)
2001q1

答案 1 :(得分:1)

将DataFrame.shift¶和DataFrame.le链接到datframe中的布尔选择

 a,*b,= df.loc[df.Growth.le(0)&df.Growth.shift().le(0),'Quarters'].values.tolist()
print(a)

说明

df.loc[df.Growth.le(0)&df.Growth.shift().le(0),'Quarters'].values.tolist()#Boolean select consecutive negative numbers in column Quaters into a list
 a,*b,=x# Unpack list x giving the first element

'2001q1'

答案 2 :(得分:1)

    $(document).ready(function(){

  $("button").click(function(){
  $.get("http://localhost/suman_php/JQ_AJAX/demo.txt", function(data, status){
    alert(status);
    $("#show").html(data);
  });

});

});

说明:使用iterrows(),我们可以遍历数据帧。 'flag'变量帮助我们将'Quarter'的增长值存储在当前值之前。