擅长:python、mysql、java
<p>如果尚未将<code>Date</code>列转换为datetime类型,则将临时列指定为month,从<code>Date</code>列提取月份值</p>
<p>然后为<code>Attempt</code>列过滤出具有<code>Yes</code>值的行,并按<code>month</code>和<code>Name</code>列对其进行分组,然后调用<code>size</code>获取计数,最后调用<code>to_frame</code>传递<code>count</code>作为列名来创建一个数据帧,并将其与<code>left</code>合并并传递<code>on</code>参数的公共键,然后<code>fillna(0)</code>,删除月份列,并将计数列转换为整数类型</p>
<pre class="lang-py prettyprint-override"><code>df['Date'] = pd.to_datetime(df['Date'])
df['month']=df['Date'].dt.month
(df.merge(df[df['Attempt'].eq('Yes')]
.groupby(['month', 'Name'])
.size()
.to_frame('count'),
how='left',
on=['month', 'Name']
).fillna(0).drop(columns='month').astype({'count':int})
)
Date Name Attempt count
0 2015-01-02 Adam Yes 2
1 2015-01-29 Adam Yes 2
2 2015-02-02 David No 0
3 2015-03-02 David Yes 1
4 2015-03-02 Hardik Yes 1
5 2015-03-02 David No 1
</code></pre>