<div>
</div>
<p>有人能帮我理解吗</p>
<p>让我们使用这个数据帧:</p>
<pre class="lang-py prettyprint-override"><code>df = pd.DataFrame({
"id": ['a', 'b', 'c', 'd', 'e'],
"parent_id": [None, None, 'a', 'b', 'a'],
"name": ["Bob", "Jane", "John", "Patty", "Sam"],
})
</code></pre>
<p>现在,我想检索每个子名称旁边的父名称,如下所示:</p>
<pre><code>+----+-----------+-------+-------------+
| id | parent_id | name | parent_name |
+----+-----------+-------+-------------+
| a | None | Bob | NaN |
+----+-----------+-------+-------------+
| b | None | Jane | NaN |
+----+-----------+-------+-------------+
| c | a | John | Bob |
+----+-----------+-------+-------------+
| d | b | Patty | Jane |
+----+-----------+-------+-------------+
| e | a | Sam | Bob |
+----+-----------+-------+-------------+
</code></pre>
<p>所以我这样做:</p>
<pre class="lang-py prettyprint-override"><code>df['parent_name'] = None
df['parent_name'] = df['parent_id'].apply(lambda x: df['name'][df['id']==x])
</code></pre>
<p>但我得到的是:</p>
<pre><code>+----+-----------+-------+-------------+
| id | parent_id | name | parent_name |
+----+-----------+-------+-------------+
| a | None | Bob | NaN |
+----+-----------+-------+-------------+
| b | None | Jane | NaN |
+----+-----------+-------+-------------+
| c | a | John | Bob |
+----+-----------+-------+-------------+
| d | b | Patty | NaN |
+----+-----------+-------+-------------+
| e | a | Sam | Bob |
+----+-----------+-------+-------------+
</code></pre>
<p>因此,它似乎只处理<code>name</code>列中的第一项</p>
<p>柏拉图引用苏格拉底的话:“WTF</p>