簡體   English   中英

Python Pandas 多索引 - 計算尾中大於或等於的出現次數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM