作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 pandas 数据框,如下所示。
id x1 y1
0 2 some_val some_val
1 2 some_val some_val
2 2 some_val some_val
3 2 some_val some_val
4 2 some_val some_val
5 0 0 0
6 3 some_val some_val
7 3 some_val some_val
8 0 0 0
9 5 some_val some_val
10 5 some_val some_val
11 5 some_val some_val
12 0 0 0
13 6 some_val some_val
14 6 some_val some_val
15 6 some_val some_val
16 6 some_val some_val
我的原始数据框是没有全为“0”值的行的数据框。根据项目要求,只要“id”发生变化,我就必须插入全为 0 的行。
现在我想删除任何具有 3 行且少于 3 行的“id”的所有行。从上面的数据框中,我想删除 id- "3"和 "5"的所有相应行。我的结果数据框应如下所示:
id x1 y1
0 2 some_val some_val
1 2 some_val some_val
2 2 some_val some_val
3 2 some_val some_val
4 2 some_val some_val
5 0 0 0
6 6 some_val some_val
7 6 some_val some_val
8 6 some_val some_val
9 6 some_val some_val
请建议我一种获得此结果的方法。
最佳答案
最简单的答案是删除零行,因为如果有超过 3 行,它们可能会妨碍计算。然后进行分组。然后过滤。然后像在其他问题/答案中那样添加回零
d1 = df.query('ProjID != 0').groupby('ProjID').filter(lambda df: len(df) > 3)
d1
ProjID Xcoord Ycoord
0 2 -7.863509 5.221327
1 2 some_val some_val
2 2 some_val some_val
3 2 some_val some_val
4 2 some_val some_val
13 6 some_val some_val
14 6 some_val some_val
15 6 some_val some_val
16 6 some_val some_val
然后添加回来
pidv = d1.ProjID.values
pid_chg = np.append(pidv[:-1] != pidv[1:], True)
i = d1.index.repeat(pid_chg + 1)
d2 = d1.loc[i, :].copy()
d2.loc[i.duplicated()] = 0
d2.reset_index(drop=True)
ProjID Xcoord Ycoord
0 2 -7.863509 5.221327
1 2 some_val some_val
2 2 some_val some_val
3 2 some_val some_val
4 2 some_val some_val
5 0 0 0
6 6 some_val some_val
7 6 some_val some_val
8 6 some_val some_val
9 6 some_val some_val
10 0 0 0
关于python - 如何从 pandas 数据框中删除特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42985019/
我是一名优秀的程序员,十分优秀!