我有以下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")
但这不起作用。有什么想法吗?
答案 0 :(得分:2)
#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
答案 1 :(得分:1)
days = df[['h1', 'h2', 'date']].drop_duplicates().groupby(['h1', 'h2']).count().reset_index()