<p>熊猫回答</p>
<p>我们可以首先使用<code>for col in df.columns</code>对所有列进行迭代,然后使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.columns.html" rel="nofollow noreferrer">^{<cd2>}</a></p>
<p>然后我们在这些列上<code>GroupBy</code>,并使用<a href="https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.core.groupby.DataFrameGroupBy.agg.html" rel="nofollow noreferrer">^{<cd4>}</a>。在这个聚合中,我们取target的<code>sum</code>和<code>total zeros</code>。你知道吗</p>
<p>最后,我们使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html" rel="nofollow noreferrer">^{<cd7>}</a>来连接相邻的每个组。你知道吗</p>
<pre><code>dfg = pd.concat([
(df.groupby(col)['target']
.agg([(f'sum_{col}', 'sum'),(f'total_zeros_{col}', lambda x: x.eq(0).sum())])
.reset_index()
) for col in df.columns
], axis=1)
</code></pre>
<pre><code> var1 sum_var1 total_zeros_var1 var2 sum_var2 total_zeros_var2 var3 sum_var3 total_zeros_var3 var4 sum_var4 total_zeros_var4 target sum_target total_zeros_target
0 var1_bin1 1 0 var2_bin1 1 1 var3_bin2 1.00 2.00 var4_bin1 1.00 1.00 0.00 0.00 6.00
1 var1_bin2 0 2 var2_bin2 0 1 var3_bin3 3.00 1.00 var4_bin2 1.00 1.00 1.00 4.00 0.00
2 var1_bin3 1 0 var2_bin3 2 0 var3_bin4 0.00 1.00 var4_bin4 2.00 4.00 nan nan nan
3 var1_bin4 2 1 var2_bin4 1 1 var3_bin5 0.00 2.00 NaN nan nan nan nan nan
4 var1_bin5 0 3 var2_bin5 0 3 NaN nan nan NaN nan nan nan nan nan
</code></pre>