算上使用熊猫的不重复天数?

时间:2019-10-30 10:44:58

标签: python pandas

我有以下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

我想计算唯一天数 h1h2中。因此,我应该以类似以下内容结束:

            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")

但这不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用DataFrameGroupBy.nunique

#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()