我有一个简单的数据框,其中包含“季度”和“增长”列,我想找到连续的条目为负数时的第一个实例。
df = pd.DataFrame({
'Quarters': ['2000q1','2000q2','2000q3','2OOOq4','2001q1','2001q2','2001q3'],
'Growth': [np.nan,10,20,-5,-6,10,-8]})
(第一个条目是NAN,因为“增长”来自计算条目之间的差)。
我希望代码输出“ 2001q1”,这是两个连续负增长的首次出现。谢谢!
答案 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'的增长值存储在当前值之前。