python - 从数据框中的其他行中减去行
问题描述
我想用具有其他值的行减去具有某些值的行。假设我有一个具有 16 行和两列的数据框。我需要在 0 之后和之前的标志列中的前 8 和结束 8 的值列的差异。
flag values
0 456
0 789
8 56
8 1
8 0
8 2
8 74
0 900
0 45
0 45
8 85
8 43
8 4
8 43
8 90
0 455
预期的输出如下
22 (end 8 value(74) - start 8 value(56))
5 (end 8 value(90) - start 8 value(85))
解决方案
利用:
#compare 8 in flag column
m = df['flag'].eq(8)
#create consecutive groups and filter by mask
g = m.ne(m.shift()).cumsum()[m]
#aggregate last and first by groups
df = df['values'].groupby(g).agg(['last','first']).reset_index(drop=True)
#get difference
df['diff'] = df['last'] - df['first']
print (df)
last first diff
0 74 56 18
1 90 85 5
推荐阅读
- c++ - 前 n 个素数的 Eratosthenes 筛法
- python - 使用 python 和 openpyxl 从站点更快地提取数据
- docker - Docker Compose 扩展不覆盖配置
- nestjs - ApiProperty 不反映我想要的数据类型
- shopify - 使用 FarApp 从 Shopify 到 NetSuite 的自定义映射
- r - 随机森林预测图
- python-3.x - Azure Pipeline python 脚本环境变量
- python - 可以从另一个不是其父文件夹的文件夹中使用选项 -m 运行模块吗?
- databricks - DataBricks DELTA VACUUM
- redirect - 将子目录重定向到 lighttpd 中的另一个域