python-3.x - 如果组中第一行和最后一行之间的差异超过值,熊猫会删除组
问题描述
我有一个数据框df:
df = pd.DataFrame({})
df['X'] = [3,8,11,6,7,8]
df['name'] = [1,1,1,2,2,2]
X name
0 3 1
1 8 1
2 11 1
3 6 2
4 7 2
5 8 2
对于 'name' 中的每个组,如果该组的第一行和最后一行之间的差异以绝对方式小于指定值 d_dif,则希望删除该组:
例如,当 d_dif=5 时,我想得到:
X name
0 3 1
1 8 1
2 11 1
解决方案
如果您的数据越来越多X
,您可以使用groupby().transform()
和np.ptp
threshold = 5
ranges = df.groupby('name')['X'].transform(np.ptp)
df[ranges > threshold]
如果您只关心first
and last
,那么transform
只需first
and last
:
threshold = 5
groups = df.groupby('name')['X']
ranges = groups.transform('last') - groups.transform('first')
df[ranges.abs() > threshold]
推荐阅读
- python - Pandas DataFrame 返回一个元组,但不能访问单个数字?
- python - pandas :通过减少一个大系列的一系列系列
- ios - 无法将类型“()”的值分配给类型“UIView?”
- r - 从R中的csv文件绘制多个x轴轮廓?
- java - 使用 openapi-generator-maven-plugin 打开 API 3.0 未显示任何招摇文档
- python - 如何按顺序在折线图中表示月份
- android - java - 如何像在xml中一样在java中设置lottie动画?
- acumatica - PXSelector 属性抑制表单上的错误
- android - 如何在使用改造 android 发布数据后移动到另一个活动?
- java - 使用 Java 的 keycloak 离线令牌