<blockquote>
<p>However, I would need to extract the day from each date as an int
before comparing, which I'm also having trouble with.</p>
</blockquote>
<h3>为什么?</h3>
<p>要修复代码,您需要:</p>
<pre><code>consecutive['date'] = pd.to_datetime(consecutive['date'])
g = consecutive.groupby(['Comp_ID','item_number'])
g['date'].apply(lambda x: sum(abs((x.shift(-1) - x)) == pd.to_timedelta(1, unit='D')))
</code></pre>
<p>注意以下几点:</p>
<ol>
<li>上面的代码避免了重复。这是一个基本的编程原则:<a href="https://en.wikipedia.org/wiki/Don't_repeat_yourself" rel="nofollow noreferrer">Don't Repeat Yourself</a></li>
<li>它将1转换为<code>timedelta</code>,以便进行适当的比较。</li>
<li>它需要绝对的差异。</li>
</ol>
<hr/>
<p>提示:为您的工作编写一个顶层函数,而不是<code>lambda</code>,因为它具有更好的可读性、简洁性和美观性:</p>
^{pr2}$
<hr/>
<h2>说明:</h2>
<p>这很简单。日期是<a href="http://pandas.pydata.org/pandas-docs/stable/timeseries.html#converting-to-timestamps" rel="nofollow noreferrer">converted to ^{<cd3>} type</a>,然后减去。这种差异将导致<a href="http://pandas.pydata.org/pandas-docs/stable/timedeltas.html" rel="nofollow noreferrer">^{<cd1>}</a>,它还需要与<code>timedelta</code>对象进行比较,因此需要将1(或<code>day_dif</code>)转换为<code>timedelta</code>。转换的结果将是一个布尔级数。布尔值用0表示<code>False</code>,1表示<code>True</code>。布尔级数的和将返回序列中<code>True</code>值的总数。在</p>