我的数据存储在熊猫数据框中。
规则:
_存储出现在 col1 或 col2 中的第一个值。(这里是 df["col2"][0])。
_ 增加行数,如果下一个数字连续出现在同一列,则忽略。
_ 值第一次出现在备用列中时取差值...
_ 仅在第一次更改列时为两列保留值的滚动记录。
Psedo-code e.g. based on sample data (plse see below):
df["new"][0]=df["col2"][0]-df["col1"][4]
Store df["col1"][4]
df["new"][1]=df["col2"][9]-df["col1"][4]
Store df["col1"][9]
df["new"][2]=df["col2"][9]-df["col1"][11]
etc
etc
etc
.
.
.
index col1 col2
0 46.84
1 46.84
2 46.84
3 46.84
4 44.9501
5 44.9731
6 45.0229
7 45.048
8 45.0753
9 45.0753
10 45.0753
11 46.84
12 45.0229
13 44.9501
14 46.75
15 46.75
16 44.9731
17 44.9501
18 45.0229
19 45.0229
20 46.75
框架中有数千行。非常感谢您对最佳方式的想法。
这是我的脚本的链接:
https://www.dropbox.com/s/5od59ejprwzu6ii/algo1.py
编辑: user1827356 在下面的评论部分中的建议。
df['mapnl']= np.where(df['group']%2 == 0, df['result'], -df['result']) –
我尝试了以下行来解决此问题,以尝试否定所有其他值:
df['mapnl'] = df.apply(lambda row: row['result'] if row['group']%2 == 0 else -row['result'], axis=1)
它给出的结果与 user1827356 的建议相同。