<p>以下是熊猫的设置:</p>
<pre><code>df = pd.DataFrame([[1, 1, 0, 1, 0],
[2, 0, 0, 0, 0,],
[3, 1, 0, 1, 0],
[4, 1, 0, 0, 0],
[5, 1, 0, 1, 1]],
columns=['user_id', 'Scheme1', 'Scheme2', 'Scheme3', 'Scheme4'])
print(df)
user_id Scheme1 Scheme2 Scheme3 Scheme4
0 1 1 0 1 0
1 2 0 0 0 0
2 3 1 0 1 0
3 4 1 0 0 0
4 5 1 0 1 1
</code></pre>
<p>使用pandas,要检查每个用户的方案总数,可以使用<code>df.sum(axis=1)</code>:</p>
<pre><code>print(df.iloc[:, 1:].sum(1))
0 2
1 0
2 2
3 1
4 3
dtype: int64
</code></pre>
<p>要获取<code>user_ids</code>,可以使用布尔索引:</p>
<pre><code>user_id_ser = df.user_id[df.iloc[:, 1:].sum(1) > 1]
print(user_id_ser)
0 1
2 3
4 5
Name: user_id, dtype: int64
</code></pre>
<p>要添加“Flag/Indicator”列,您需要使用<code>> 1</code>创建掩码,并使用<code>df.astype</code>转换为整数:</p>
<pre><code>df['Schemes > 1'] = (df.iloc[:, 1:].sum(1) > 1).astype(int)
print(df)
user_id Scheme1 Scheme2 Scheme3 Scheme4 Schemes > 1
0 1 1 0 1 0 1
1 2 0 0 0 0 0
2 3 1 0 1 0 1
3 4 1 0 0 0 0
4 5 1 0 1 1 1
</code></pre>
<p>最后,要获得准确的输出,可以使用<code>df.where</code>:</p>
<pre><code>print(df.where(df > 0).count())
user_id 5
Scheme1 4
Scheme2 0
Scheme3 3
Scheme4 1
Schemes > 1 3
dtype: int64
</code></pre>