在 pandas 的 groupby 中添加默认值

Add default value while groupby in pandas

我正在使用 Pandas 数据框,我的数据包含日期、事件和计数列。

Date        Events     Count
1/1/2021    Event1      2
1/1/2021    Event2      1
2/1/2021    Event1      2
1/2/2021    Event1      1
2/1/2021    Event2      1
3/2/2021    Event3      2
3/2/2021    Event3      2

如果事件在同一个月重复发生,我想对其进行分组,并在计数列中将默认值设为 1。

Date        Events  Count
1/1/2021    Event1    1
1/1/2021    Event2    1
1/2/2021    Event1    1
3/2/2021    Event3    1

使用 DataFrame.drop_duplicates 并将 1 设置为 Count 列:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

df['months'] = df['Date'].dt.to_period('m')


df1 = df.drop_duplicates(['months','Events']).assign(Count=1)
print (df1)
        Date  Events  Count   months
0 2021-01-01  Event1      1  2021-01
1 2021-01-01  Event2      1  2021-01
3 2021-02-01  Event1      1  2021-02
5 2021-02-03  Event3      1  2021-02

df1 = df1.drop('months', axis=1)
print (df1)
        Date  Events  Count
0 2021-01-01  Event1      1
1 2021-01-01  Event2      1
3 2021-02-01  Event1      1
5 2021-02-03  Event3      1