【发布时间】:2021-08-02 15:31:09
【问题描述】:
有人可以帮我理解一下吗?
让我们拥有这个 DataFrame:
df = pd.DataFrame({
"id": ['a', 'b', 'c', 'd', 'e'],
"parent_id": [None, None, 'a', 'b', 'a'],
"name": ["Bob", "Jane", "John", "Patty", "Sam"],
})
现在,我想像这样检索每个子名称旁边的父名称:
+----+-----------+-------+-------------+
| 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 |
+----+-----------+-------+-------------+
所以我这样做了:
df['parent_name'] = None
df['parent_name'] = df['parent_id'].apply(lambda x: df['name'][df['id']==x])
但这是我得到的:
+----+-----------+-------+-------------+
| 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 |
+----+-----------+-------+-------------+
因此,它似乎只处理name 列中的第一项。
用柏拉图的话引用苏格拉底的话:“WTF???”
【问题讨论】:
-
@jezrael 你确定标记的欺骗是正确的吗?在这个问题中,只有一个数据框而不是两个。也许如果你想关闭它找到更好的骗局。
-
@ShubhamSharma - 感谢您的评论,已添加到骗子列表中。