获取分层熊猫数据框中的先前值

马克·扎德拉维克(Marko Zadravec)

假设我有这样的数据

id   X  Y  Z
-----------------
0    1  2  10
0    1  2  20
0    1  3  30
0    1  4  40
0    2  2  50
0    2  2  60
0    2  2  70
0    2  3  80
0    2  3  90
0    2  3  100
0    2  3  110
0    2  4  120

我想计算X,Y对的先前值和“索引”。最终结果应如下所示

id   X  Y  Z    Z_previous   Z_index
---------------------------------------
0    1  2  10       0          0
0    1  2  20      10          1
0    1  3  30       0          0
0    1  4  40       0          0
0    2  2  50       0          0
0    2  2  60      50          1
0    2  2  70      60          2
0    2  3  80       0          0
0    2  3  90      80          1      
0    2  3  100     90          2
0    2  3  110    100          3
0    2  4  120      0          0

好吧,我做了3个新的班次

pf[Z_previous] = df.Z.shift(1)
pf[X_previous] = df.X.shift(1)
pf[Y_previous] = df.Y.shift(1)

现在我会做这样的事情

if X != X_previous || Y != Y_previous:
    Z_previous = 0

我不确定如何使用数据框执行此操作。

有没有更好的办法?

YOLO

你可以做:

# row index in a group
df2['index']=df.groupby(['X','Y']).cumcount()+1

# groupby to calculate aggregates
xf = df2.groupby(['X','Y']).agg(Z_previous=('Z', 'shift'),
                                Z_index = ('index', 'shift')).fillna(0)

# join the result
df2 = pd.concat([df2.drop('index', 1), xf], axis=1)

print(df2)

    id  X  Y    Z  Z_previous  Z_index
0    0  1  2   10         0.0      0.0
1    0  1  2   20        10.0      1.0
2    0  1  3   30         0.0      0.0
3    0  1  4   40         0.0      0.0
4    0  2  2   50         0.0      0.0
5    0  2  2   60        50.0      1.0
6    0  2  2   70        60.0      2.0
7    0  2  3   80         0.0      0.0
8    0  2  3   90        80.0      1.0
9    0  2  3  100        90.0      2.0
10   0  2  3  110       100.0      3.0
11   0  2  4  120         0.0      0.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在熊猫数据框中获取特定值

来自分类Dev

从熊猫数据框中获取索引值

来自分类Dev

获取熊猫数据框值

来自分类Dev

熊猫,获取数据框列中单个值的计数

来自分类Dev

如果值在列数据框中,则熊猫获取行

来自分类Dev

熊猫数据框中的列获取不正确的值

来自分类Dev

子集数据框:从原始df中获取先前值,但不在子集中

来自分类Dev

绘制分层索引的熊猫数据框

来自分类Dev

熊猫根据不同列中的先前值获取价值

来自分类Dev

从熊猫数据框中获取数组的子集

来自分类Dev

从堆叠的熊猫数据框中获取JSON

来自分类Dev

从熊猫数据框中获取数组的子集

来自分类Dev

Python:在熊猫数据框中获取位置

来自分类Dev

从熊猫数据框中获取随机样本,但每个值仅获取一个

来自分类Dev

熊猫数据框-获取列索引以获取一行中的最小值

来自分类Dev

熊猫过滤数据框中的值

来自分类Dev

熊猫数据框中的值组合

来自分类Dev

从熊猫数据框中摆脱NaT值

来自分类Dev

修改熊猫数据框中的值

来自分类Dev

比较熊猫数据框中的行值

来自分类Dev

无法在熊猫数据框中插值

来自分类Dev

熊猫数据框中的查找值

来自分类Dev

替换熊猫数据框中的值

来自分类Dev

从列表中更新熊猫数据框值

来自分类Dev

计算熊猫数据框中的不同值

来自分类Dev

熊猫过滤数据框中的值

来自分类Dev

修改熊猫数据框中的值

来自分类Dev

更改熊猫数据框中的索引值

来自分类Dev

更改熊猫数据框中的索引值