我在数据框中有一组数据,需要查找销售额连续两个季度下降的时间段,然后需要查找销售额连续两个季度增长的时间段。
我列出了下面数据的一个子集,以供参考。
Sales in Millions
Year1Q1 15
Year1Q2 13
Year1Q3 16
Year1Q4 14
Year2Q1 12
Year2Q2 11
Year2Q3 10
Year2Q4 11
Year3Q1 11
Year3Q2 10
Year3Q3 15
Year3Q4 17
正如你所看到的,在Year1Q3之后,销售额连续两年下降。然后,由于销售额连续两个季度增长,Year3的低销售额在第三季度和第四季度有所回升。
我需要查询数据帧以返回Year1Q4,然后返回Year3Q4。任何关于如何制定对数据帧的查询的想法都是值得赞赏的。
发布于 2019-07-31 02:54:14
在pandas中可能有一种很酷的方法来实现这一点,但是对于数据帧上更复杂的操作,一个好方法是编写一个可以在数据帧的每一行上执行的小函数,然后使用df.apply
。
为简单起见,我使用列名quarter
和sales
。
# get a list of all quarters, will make things easier later
quarters = df['quarter'].values.tolist()
# define windowing function
# True = last quarter in a 4 quarter window that matches your criteria
# False = all others
def check_quarter(quarter):
q_index = quarters.index(quarter)
window = quarters[q_index-3: q_index+1]
sales = df[df['quarter'].isin(window)]['sales'].values.tolist()
if len(sales) == 4 and sales[1] < sales[0] and sales[3] > sales[2]:
return True
return False
# assign bools to new column
df['check'] = df['quarter'].apply(check_quarter)
# select quarters
df[df['check'] == True]['quarter']
https://stackoverflow.com/questions/57280628
复制相似问题