[英]Python Pandas Multi Index - Count the number of occurrences greater than or equal to in tail
我有一個多索引 dataframe 看起來像這樣:
對於每個項目,我想計算在最后兩個周期中 qty 大於或等於 18 的次數。答案將寫入一個新的 df,該 df 具有項目編號和出現次數,例如:
這就是我試圖做的:
import pandas as pd
df = pd.DataFrame({'item':[1,1,1,2,2,3],'date':['2020-03-31','2020-06-30','2020-09-30','2021-04-15','2021-06-30','2021-06-30',],'warehouse':[10,11,12,13,14,15], 'qty':[16,17,18,19,20,21]}).set_index(['item','date'])
df
new_df = []
new_df['occurs'] = df['qty'].tail(2).ge(2).sum()
new_df
這會產生一個錯誤:
TypeError: list indices must be integers or slices, not str
有人可以指出我正確的方向嗎?
不知道為什么 3 在你的例子中得到 NaN,但這可以通過 groupby 和 apply 函數來完成:
new_df = df.groupby(level=0).apply(lambda x:(x.tail(2).qty>=18).sum())
new_df
1 1
2 2
3 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.