回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个csv文件,包含100多列3500行,如下所示(仅举一个示例):</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
data = pd.DataFrame(data={
'Profit': [90, -70, 111, 40, -5, -1],
'Crit1': [True, True, False, True, False, True],
'Crit2': [False, False, False, True, True, False],
'Crit3': [True, True, False, True, True, True],
'Crit4': [False, True, True, False, False, False],
'Crit5': [True, False, False, True, True, True]
})
</code></pre>
<p>我想定义3个结果:</p>
<p>1-总利润:是“利润”列的总和</p>
<p>2-posValues:列结果中有多少个正值</p>
<p>3-negValues:列结果中有多少个负值</p>
<pre><code>totalProfit = data['Profit'].sum() # The sum is 165
</code></pre>
<p>在本例中,posValues将为3,negValues将为3。但我不知道如何用公式计算它们</p>
<p>我想找到筛选出的列(真/假)的最佳组合,以增加posValues,减少negValues,同时最大化totalProfit</p>
<p>根据猜测,我认为最好的组合是:Crit1和Crit5设置为True</p>
<pre class="lang-py prettyprint-override"><code>print(data[(data.Crit5 == True) & (data.Crit1 == True)])
totalResult = data['Profit'][(data.Crit5 == True) & (data.Crit1 == True)].sum()
print(totalResult)
</code></pre>
<p>通过这个组合,我们将得到totalResult=129,posValues=2和negValues=1,组合是:将Crit1和Crit5设置为True</p>
<p>请记住,过滤所有列不是强制性的,我可以有一些未过滤的(如示例中所示)</p>
<p>我怎样才能有一个代码来增加posValues和减少NEGVALLUES,同时最大化totalProfit,并显示哪个真/假列组合是最好的</p>