首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python熊猫按序列加减

Python熊猫按序列加减
EN

Stack Overflow用户
提问于 2022-08-30 12:33:06
回答 1查看 43关注 0票数 -1

我有一个两列框架,看起来是这样的:

代码语言:javascript
运行
复制
value,Sequence
12506,-1
12501,-2
12513,-3
12513,1
12521,2
12501,3
12583,-1
12594,-2
12598,1
12589,-1
12615,1
12615,2
12611,3
12573,-1
12593,-2
12564,-3

我想要一个新的数据框架,计算值是组合标签。

如何按顺序添加:

(1)(值= 12501)按标签-2

(数值= 12513)按标签-3

标签(-3)-标签(-2)

12501 - 12513 = -12

2)(数值= 12521)按标签2,

(数值= 12501)按标签3

标签(2)-标签(3)

12521 - 12501 = 20

如果在标签(-2,2)之后没有标签(-3,3),并且有标签(-1,1),则计算如下

(3)(值= 12594)按标签-2

(值= 12598)按标签1

标签(-2)-标签(1)

12594 - 12598 = -4

如果在标签(-1,1)之后有(1,-1),则不会进行计算。

我想要一个这样的数据框架:

代码语言:javascript
运行
复制
Calculation
-12
20
-4
4
-29

使用Pandas可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 13:10:03

是的,我只是做了,但我只是不知道为什么,我如何设法理解你想要什么。(编辑:我不认为,但相当接近)

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

d = {'value':[12506,12501,12513,12513,
              12521,12501,12583,12594,
              12598,12589,12615,12615,
              12611,12573,12593,12564], 
     'Sequence':[-1,-2,-3,1,2,3,-1,-2,1,-1,1,2,3,-1,-2,-3]}
df = pd.DataFrame(data=d)

df['value_shifted'] = df["value"].shift(-1)
df['Sequence_shifted'] = df["Sequence"].shift(-1)
new_df = df.where(np.abs(df['Sequence']) == 2).dropna()
new_df['calculation'] = new_df['value'] - new_df['value_shifted']

结果(new_df):

代码语言:javascript
运行
复制
      value  Sequence  value_shifted  Sequence_shifted  calculation
1   12501.0      -2.0        12513.0              -3.0        -12.0
4   12521.0       2.0        12501.0               3.0         20.0
7   12594.0      -2.0        12598.0               1.0         -4.0
11  12615.0       2.0        12611.0               3.0          4.0
14  12593.0      -2.0        12564.0              -3.0         29.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73542523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档