指定されたアイテムのステータス変更を示すレコードのリストがあります。したがって、各レコードは、アイテム、アクティブステータス(0または1)、およびステータスが変更された日付を示します。前の値を考慮して、期間あたりの値カウント
小さな例:
import pandas as pd
data = [
{"item": "A", "active": 1, "date": "2016-01-01"},
{"item": "B", "active": 1, "date": "2016-02-01"},
{"item": "C", "active": 0, "date": "2016-02-10"},
{"item": "B", "active": 0, "date": "2016-03-01"},
{"item": "A", "active": 0, "date": "2016-04-01"},
]
df = pd.DataFrame(data)
# active date item
# 0 1 2016-01-01 A
# 1 1 2016-02-01 B
# 2 0 2016-02-10 C
# 3 0 2016-03-01 B
# 4 0 2016-04-01 A
Iは、時間当たりの存在中項目の数を示すために、集約を計算したいです。番号にはステータスが変更されていないアイテムが含まれている必要があります(この例では、2月または3月にはAは記載されていませんが、両方でカウントする必要があります)。したがって、上記の例では、これは正しい結果になります:
month active_count
--------------------
2016-01 1
2016-02 2
2016-03 1
2016-04 0
はどのように我々は、期間の数の計算内のアイテムの最新の値が含まれていますか?
df = df.set_index('date')
df.index = pd.to_datetime(df.index)
はgroupging、リサンプリングと加算を行います:
のEVELは、これは正しく動作していないと思われます。サンプルデータを 'data = [{" item ":" A "、" active ":1、" date ":" 2016-01-01 "}、{" item ":" B " "active":1、 "date": "2016-02-01"}、{"item": "C"、 "active":1、 "date": "2016-02-10"}、{item ":" B "、" active ":0、" date ":" 2016-03-01 "}、{" item ":" A "、" active ":0、" date ":" 2016-04-01 "}]'ならば、 '2016-2'と '2016-03'の' active_count'はそれぞれ '3'と' 2'でなければなりません。上記のコードでは、これらの期間に '3'と' 1'が得られます。 –