作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了 python 和 pandas 数据框的一个小问题。我如何循环遍历该列并使用“类型”数据将子项(橙子、香蕉和鳄梨)与父项“水果”相关联,并将子项(汉堡、薯条)与父项“快餐”相关联?
+-----------+------+----------+-----------+
| Parent_ID | ID | Type | Name |
+-----------+------+----------+-----------+
| | 226 | Category | Fruit |
| | 2090 | Item | Orange |
| | 2091 | Item | Banana |
| | 2092 | Item | Avocados |
| | 209 | Category | Fast-Food |
| | 2097 | Item | Burger |
| | 2099 | Item | fries |
+-----------+------+----------+-----------+
我想要如下所示的数据框。
+-----------+------+----------+-----------+
| Parent_ID | ID | Type | Name |
+-----------+------+----------+-----------+
| | 226 | Category | Fruit |
| 226 | 2090 | Item | Orange |
| 226 | 2091 | Item | Banana |
| 226 | 2092 | Item | Avocados |
| | 209 | Category | Fast-Food |
| 209 | 2097 | Item | Burger |
| 209 | 2099 | Item | fries |
+-----------+------+----------+-----------+
最佳答案
您可以从检查 Type
列等于 Category
的位置开始,然后获取 bool 系列的 cumsum
。然后将结果用到GroupBy
ID
取第一个作为每组的Parent_ID
:
g = df.Type.eq('Category').cumsum()
df = df.assign(Parent_ID=df.groupby(g).ID.transform('first'))
df['Parent_ID'] = df.Parent_ID.where(df.ID.ne(df.Parent_ID)).fillna('')
ID Type Name Parent_ID
0 226 Category Fruit
1 2090 Item Orange 226
2 2091 Item Banana 226
3 2092 Item Avocados 226
4 209 Category Fast-Food
5 2097 Item Burger 209
6 2099 Item fries 209
关于python - 如何将子项目与 Pandas 数据框中的父项目相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689548/
我是一名优秀的程序员,十分优秀!