<p>这里有一条路</p>
<p>使用<code>apply</code></p>
<pre><code>In [235]: df.groupby('Location')['Rule_ID'].apply(lambda x: len(set(x.sum())))
Out[235]:
Location
India 3
Japan 3
US 4
Name: Rule_ID, dtype: int64
</code></pre>
<p>-</p>
<pre><code>In [236]: (df.groupby('Location')
.apply(lambda x: pd.Series(x['Rule_ID'].sum()))
.reset_index()
.groupby(['Location', 0]).size())
Out[236]:
Location 0
India 2c78g 1
d67gh 1
df890o 1
Japan 5ty78 1
d67gh 1
df890o 1
US 2c78g 2
5ty78 2
df567 1
df890o 1
dtype: int64
</code></pre>
<hr/>
<p><strong>细节</strong></p>
<p><code>x.sum()</code>在链表连接它们时,可以通过对链表集合进行计数来获得唯一的计数。你知道吗</p>
<pre><code>In [237]: df.groupby('Location')['Rule_ID'].apply(lambda x: x.sum())
Out[237]:
Location
India [2c78g, d67gh, df890o]
Japan [d67gh, df890o, 5ty78]
US [2c78g, df567, 5ty78, 2c78g, 5ty78, df890o]
Name: Rule_ID, dtype: object
</code></pre>
<p>在列表上应用<code>pd.Series</code>将创建新行,然后在位置和度量上应用<code>groupby</code>。你知道吗</p>
<pre><code>In [240]: df.groupby('Location').apply(lambda x: pd.Series(x['Rule_ID'].sum()))
Out[240]:
Location
India 0 2c78g
1 d67gh
2 df890o
Japan 0 d67gh
1 df890o
2 5ty78
US 0 2c78g
1 df567
2 5ty78
3 2c78g
4 5ty78
5 df890o
dtype: object
</code></pre>