有人能帮我理解吗
让我们使用这个数据帧:
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
我不认为如何使用apply,但您可以使用merge:
我们可以基于公共
id
尝试mapping的parent_id
和相应的parent_name
尝试合并
相关问题 更多 >
编程相关推荐