擅长:python、mysql、java
<p>这里有一种完全矢量化的方法,通过“融合”数据帧,将其连接到自身,然后查找满足以下三个条件的行:</p>
<ul>
<li>第一周的项目与下一周的项目相同</李>
<li>周1+1==周2</li>
<li>第一项的索引小于第二项的索引</李>
</ul>
<pre><code>
df = data.reset_index().melt(id_vars="index")
df["week"] = df.variable.str.replace("week", "").astype(int)
df = df[["index", "value", "week"]]
df = pd.merge(df.assign(dummy = 1), df.assign(dummy=1), on = "dummy")
df[(df.value_x == df.value_y) & (df.week_x + 1 == df.week_y) & (df.index_x < df.index_y)]["value_x"]
</code></pre>
<p>输出:</p>
<pre><code>4 item1
34 item2
44 item1
Name: value_x, dtype: object
</code></pre>