<p>由于这里的逻辑相当复杂,我建议将条件放在函数中,并使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html" rel="nofollow noreferrer">DataFrame.apply()</a>为数据集中的每一行调用该函数。以下是我如何将您的示例翻译成熊猫:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
df = pd.read_csv("test.csv")
def classify(row):
Col2 = row["Col2"]
Col3 = row["Col3"]
Col4 = row["Col4"]
Col5 = row["Col5"]
Col6 = row["Col6"]
Col7 = row["Col7"]
if Col5 == 'AG' and Col2 == 'A' and Col3 == 'M' and Col4 == 1:
return 'A1'
if Col5 == 'AG' and Col2 == 'A' and Col3 == 'M' and Col4 == 0:
return 'A2'
if Col6 == 'BL' and Col2 == 'A' and Col3 == 'M' and Col4 == 1:
return 'B1'
if Col6 == 'BL' and Col2 == 'A' and Col3 == 'M' and Col4 == 0:
return 'B2'
if Col7 == 'HL' and Col2 == 'A' and Col3 == 'M' and Col4 == 1:
return 'H1'
if Col6 == 'HL' and Col2 == 'A' and Col3 == 'M' and Col4 == 0:
return 'H2'
# No match
return None
df["NewCol"] = df.apply(classify, axis=1)
print(df)
</code></pre>
<p>注意:我在您的数据集上尝试了此函数,得到了以下结果,这可能不是您想要的结果:</p>
<pre><code> Col1 Col2 Col3 Col4 Col5 Col6 Col7 NewCol
0 1 A T 1 AG NBL NH None
1 2 A T 1 NAG BL NH None
2 3 A M 2 NAG NBL HL None
3 4 NS M 1 NAG BL NH None
4 5 NS T 1 NAG NBL HL None
5 6 A M 2 NAG NBL HL None
</code></pre>
<p>检查每一行,它们似乎都是正确的——没有一行遵循您的任何规则。我建议仔细检查一下你的规则是否正确</p>