gpt4 book ai didi

sql - 连续对某行进行pandas列操作

转载 作者:行者123 更新时间:2023-12-05 00:11:37 25 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框:

    second          block
0 1 a
1 2 b
2 3 c
3 4 a
4 5 c

这是一个顺序数据,我想得到一个新列,它是当前块和下一次重复之间的时间差。
    second          block     freq
0 1 a 3 //(4-1)
1 2 b 0 //(not repeating)
2 3 c 2 //(5-3)
3 4 a 0 //(not repeating)
4 5 c 0 //(not repeating)

我试图获得唯一的块列表。然后是一个 for 循环,如下所示。
for i in unique_block:
df['freq'] = df['timestamp'].shift(-1) - df['timestamp']

我不知道如何为行索引 1、3、4 获得 0,因为数据框太大。这效率不高。这是行不通的。

谢谢。

最佳答案

使用 groupby + diff(periods=-1) .乘以 -1得到你的差异约定并用 0 填充。

df['freq'] = (df.groupby('block').diff(-1)*-1).fillna(0)

second block freq
0 1 a 3.0
1 2 b 0.0
2 3 c 2.0
3 4 a 0.0
4 5 c 0.0

关于sql - 连续对某行进行pandas列操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53137563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com