擅长:python、mysql、java
<p>我们用nunique过滤掉我们需要的行</p>
<pre><code>t=largedf[largedf.iloc[:,1:].nunique(1).gt(1)]
t=t.set_index('arow')
s=t.copy()
</code></pre>
<p>然后我们使用<code>map</code>将列更改为类别</p>
<pre><code>s.columns=s.columns.map(dict(zip(s.columns,np.repeat(['animals','color'],2))).get)
# get the percentage and the category accordingly
s1=(s.eq('a').groupby(level=0,axis=1).sum()/2).stack()
# concat together
pd.concat([t,s1[s1!=0].reset_index(level=1)],axis=1).rename(columns={'level_1':'category',0:'percent'})
Out[287]:
cat dog green red category percent
arow
row1 b b a a color 1.0
row2 a a b b animals 1.0
</code></pre>