<p>欢迎使用Python。在熊猫中,你要做的是一项简单的任务。一个<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html" rel="nofollow noreferrer">pandas Dataframe</a>的每一列都是一个序列对象;基本上是一个值列表。您正在尝试查找哪些行号(又称索引)满足以下条件:<code>new_id == "no match was found"</code>。这可以通过将列从数据帧中拉出并应用lambda函数来实现。我建议将这段代码粘贴到一个新文件中,然后四处看看它是如何工作的</p>
<pre><code>import pandas as pd
# Create test data frame
df = pd.DataFrame(columns=('new_id','old_id'))
df.loc[0] = (1, None)
df.loc[1] = ("no match", 4)
df.loc[2] = (3, None)
df.loc[3] = ("no match", 4)
print("\nHere is our test dataframe:")
print(df)
print("\nShow the values of the 'new_id' that meet our criteria:")
print(df['new_id'][lambda x: x == "no match"])
# Pull the index from these rows
indeces = df['new_id'][lambda x: x == "no match"].index.tolist()
print("\nIndeces:\n", indeces)
print("\nShow only the rows of the data frame that match 'indeces':")
print(df.loc[indeces]['old_id'])
</code></pre>
<p>关于此代码的几个注意事项:</p>
<ul>
<li><code>df.loc[]</code>指数据帧的特定行<code>df.loc[2]</code>指第三行(因为熊猫数据帧通常是<a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html" rel="nofollow noreferrer">zero-indexed</a>)</li>
<li>这里的lambda函数分别获取列表(或系列对象)的每个值,并将这些值逐个插入到函数中。在本例中,我们将“new_id”的每个值引用为“x”,然后检查<code>x == "no match"</code>。将括号<code>[]</code>放在其周围会将输出转换为列表。因此,在这种情况下,<code>[lambda x: x == "no_match"]</code>的输出将是一个真值或假值列表。然后将该列表应用于我们的Series对象,以便只返回带有<code>True</code>的行</李>
<li>应用lambda函数<code>.index.tolist()</code>后,将Series对象转换为其索引列表</李>
</ul>