gpt4 book ai didi

python - 计算 Pandas DataFrame 中满足条件后的累计行数

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:04 26 4
gpt4 key购买 nike

我有一个 pandas DF,它有两列,日和数据,从 csv 文件读取。

enter image description here

阅读后,我添加了 3 列“条件为 0 的天数”、1 和 2。例如,对于“条件为 2 的天数”列,我这样做:

DF['Days with condition 2'] = ''
DF['Days with condition 2'][DF['Data']==2]=1

我需要做但无法弄清楚的是如何计算“条件后的天数”0,1,2。例如,“自条件 2 以来的天数”应在索引 19 中显示 11,因为这是自最后一个条件被触发(索引 8)以来的行数。有没有 Pandas 功能可以做到这一点?

最佳答案

从您的两个原始专栏开始

   Day  Data
0 1 1
1 2 0
2 3 0
3 4 0
4 5 0
5 6 0
6 7 1
7 8 0
8 9 2
9 10 0
10 11 0
11 12 1
12 13 0
13 14 0
14 15 0
15 16 1
16 17 0
17 18 1
18 19 0
19 20 2
20 21 0
21 22 0
22 23 0

以下是填充“条件 2 的天数”的方法。使用 bool 索引过滤 2s。然后我们使用 shift() 减去前一天。

接下来的几个步骤过滤第一次出现的 2 并将“条件 2 的天数”更新为天,但它可以是您想要的任何值

然后是 fillna() 以摆脱 NaN。相同的模式可用于您要添加的其他两列

filter = (df["Data"] == 2) 
df.loc[filter,"Days with condition 2"] = df[filter]["Day"] - df[filter]["Day"].shift(1)
filter = filter & (df["Days with condition 2"].isnull())
df.loc[filter,"Days with condition 2"] = df[filter]["Day"]
df = df.fillna(0)
df
Day Data Days with condition 2
0 1 1 0
1 2 0 0
2 3 0 0
3 4 0 0
4 5 0 0
5 6 0 0
6 7 1 0
7 8 0 0
8 9 2 9
9 10 0 0
10 11 0 0
11 12 1 0
12 13 0 0
13 14 0 0
14 15 0 0
15 16 1 0
16 17 0 0
17 18 1 0
18 19 0 0
19 20 2 11
20 21 0 0
21 22 0 0
22 23 0 0

关于python - 计算 Pandas DataFrame 中满足条件后的累计行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292966/

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