gpt4 book ai didi

python - 根据连续行值差异拆分数据框

转载 作者:行者123 更新时间:2023-12-04 09:33:18 24 4
gpt4 key购买 nike

我有一个这样的数据框,

df
col1 col2 col3
1 2 3
2 5 6
7 8 9
10 11 12
11 12 13
13 14 15
14 15 16

现在,当两个连续行的 col1 差异大于 1 时,我想从上面创建多个数据框。所以结果数据框看起来像,

df1
col1 col2 col3
1 2 3
2 5 6
df2
col1 col2 col3
7 8 9
df3
col1 col2 col3
10 11 12
11 12 13
df4
col1 col2 col3
13 14 15
14 15 16

我可以使用 for 循环并存储索引来执行此操作,但这会增加执行时间,寻找一些 pandas 快捷方式或 pythonic 方式来最有效地执行此操作。

最佳答案

您可以通过使用 diff 来定义自定义石斑鱼,检查它何时大于 1,并取 cumsum bool 系列的。然后按结果分组并从 groupby 对象构建字典:

d = dict(tuple(df.groupby(df.col1.diff().gt(1).cumsum())))

print(d[0])
col1 col2 col3
0 1 2 3
1 2 5 6

print(d[1])
col1 col2 col3
2 7 8 9

更详细的分解:

df.assign(difference=(diff:=df.col1.diff()), 
condition=(gt1:=diff.gt(1)),
grouper=gt1.cumsum())

col1 col2 col3 difference condition grouper
0 1 2 3 NaN False 0
1 2 5 6 1.0 False 0
2 7 8 9 5.0 True 1
3 10 11 12 3.0 True 2
4 11 12 13 1.0 False 2
5 13 14 15 2.0 True 3
6 14 15 16 1.0 False 3

关于python - 根据连续行值差异拆分数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62721565/

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