为了账号安全,请及时绑定邮箱和手机立即绑定

从 Pandas 段中获取值并原地减去

从 Pandas 段中获取值并原地减去

MMMHUHU 2021-11-30 16:47:13
我有一张表,其值类似于val1     val2     val3    segVal  0      12.3     88.2 20         0        0 50      14.5     88.7 70         0        0 85         0        0 90      18.2     88.9对于我的 segVal,我需要使用与已知 val2 的 val1 列的差异。所以我的第一段将是零到 50,我从 0 中减去并将其应用于所有 segVal 行。我的下一段是 90,所以我会从 50 中减去它并应用它。所以我的输出表将是val1     val2     val3    segVal  0      12.3     88.2     50 20        0         0     50 50      14.5     88.7     50 70         0        0     40 85         0        0     40 90      18.2     88.9     40我目前的工作方法是df1 = df[df.val2 != 0]df1 = df1.copy()df1.segVal=(df1['val1'].diff(-1))*1所以我正在创建一个额外的 df 并以这种方式计算值,然后将这些值与原始 df 合并。似乎必须有更好的方法来做到这一点,我的意思是,我的方法有效,但创建额外的 df 似乎效率不高
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

这是一种方法:


df['segVal'] = df.where(df.val2.ne(0)).val1.dropna().diff().reindex(df.index).bfill()


   val1  val2  val3  segVal

0  0     12.3  88.2  50.0  

1  20    0.0   0.0   50.0  

2  50    14.5  88.7  50.0  

3  70    0.0   0.0   40.0  

4  85    0.0   0.0   40.0  

5  90    18.2  88.9  40.0  


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信