gpt4 book ai didi

python - 检查 pandas 条件行选择中数据帧的一部分的长度

转载 作者:行者123 更新时间:2023-12-02 18:07:14 25 4
gpt4 key购买 nike

假设我有一个像这样的 pandas 数据框:

    first   second  third
1 2 2 1
2 2 1 0
3 3 4 5
4 4 6 3
5 5 4 3
6 8 8 4
7 3 4 2
8 5 6 6

可以使用以下代码创建:

dataframe = pd.DataFrame(
{
'first': [2, 2, 3, 4, 5, 8, 3, 5],
'second': [2, 1, 4, 6, 4, 8, 4, 6],
'third': [1, 0, 5, 3, 3, 4, 2, 6]
}
)

我想选择第二列的值大于第一列的值,同时第三列的值小于第二列的值的行 k 连续行,其中这 k 连续行的最后一行正好位于第二列值所在的行之前大于第一列的值,并且 k 可以是 2 到 4 之间的任何整数(闭区间)。

因此,输出应该是行:3、7、8

要在 pandas 中使用条件行选择获得上述结果,我知道我应该编写如下代码:

dataframe[(dataframe['first'] < dataframe['second']) & (second_condition)].index

但我不知道为上面解释的第二个条件写什么。谁能帮我解决这个问题吗?

最佳答案

这里的技巧是计算 bool 掩码上的rolling sum,以找出k之前的行中的值的数量,其中第三列小于第二

k = 2
m1 = df['second'].gt(df['first'])
m2 = df['third'].lt(df['second']).shift(fill_value=0).rolling(k).sum().eq(k)

print(df[m1 & m2])

first second third
3 3 4 5
7 3 4 2
8 5 6 6

关于python - 检查 pandas 条件行选择中数据帧的一部分的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72994967/

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