我有以下df
:
h1 h2 date c
0 002599f58e A 2019-09-23 1
1 002599f58e A 2019-09-24 3
2 005344fe83 C 2019-09-30 7
3 005344fe83 D 2019-10-02 1
4 005344fe83 D 2019-10-03 2
我想计算
h1
在h2
中的唯一天数。因此,我应该以如下形式结束: h1 h2 count
0 002599f58e A 2
2 005344fe83 C 1
4 005344fe83 D 2
因为A在两天内出现,C在一天内出现,D在另外两天内出现。我尝试过类似的东西
days = df.groupby(["h1",
df["date"].dt.floor("D"),
"h3"]).size().reset_index(name="count")
但这是行不通的。有任何想法吗?
最佳答案
#convert to datetimes and if necessary remove times by floor
df['date'] = pd.to_datetime(df['date']).dt.floor("D")
days = df.groupby(["h1", 'h2'])["date"].nunique().reset_index(name="count")
print (days)
h1 h2 count
0 002599f58e A 2
1 005344fe83 C 1
2 005344fe83 D 2