计算每行日期的出现次数



我有一个带有名称和日期时间的数据帧,如下所示。

name, date_1, date_2, date_3, ..., date_100
A, 2020-07-01, 2020-07-3,2020-07-04,..., 2020-11-30
B, 2020-07-02, 2020-07-02, 2020-07-06,..., NaT

我想统计一下从2020-07-01到2020-11-30,每个人出现了多少次。所以输出应该是这样的。

name, 2020-07-01, 2020-07-02,...,2020-11-30
A, 1, 0, ..., 1
B, 0, 2, ..., 0 

我试过了,但这并不是我需要的。

df.index = pd.to_datetime(df['date_1'])
df.groupby(by=[df.index.day])
Output:
date_1, name, date_1, date_2, ... date_100
2020-07-01, A, 2020-07-01, 2020-07-3,2020-07-04,..., 2020-11-30
2020-07-03, B, 2020-07-02, 2020-07-02, 2020-07-06,..., NaT

是否有任何函数可以计算每行日期的出现次数?

让我们尝试melt将日期转换为列,crosstab计算同时出现的次数:

melt_df = df.melt('name', value_name='date').dropna()
pd.crosstab(melt_df['name'], melt_df['date'])

最新更新