gpt4 book ai didi

python - 第一次组在 Pandas DataFrame 中满足条件

转载 作者:行者123 更新时间:2023-12-04 12:21:06 25 4
gpt4 key购买 nike

我有以下 pandas.DataFrame :



ID

X


0
01001
2015年
0

1
01001
2016年
0.5

2
01001
2017年
0

3
01001
2018年
0

4
01002
2015年
0

5
01002
2016年
0

6
01002
2017年
0.0667525

7
01002
2018年
0.133505


我的目标是第一次创建一个新列并用 1 的一行填充每个窗口 x > 0 并用 0 填充所有前面的行。那是:



ID

X



0
01001
2015年
0
0

1
01001
2016年
0.5
0

2
01001
2017年
0
1

3
01001
2018年
0
1

4
01002
2015年
0
0

5
01002
2016年
0
0

6
01002
2017年
0.0667525
0

7
01002
2018年
0.133505
1


如何才能做到这一点?
这就是我想出的:第一次获取每个组的索引 x > 0 并用 1 从该索引填充每个窗口,直到分区结束。然后,获取这些索引并用 0 替换它们的行。
这是我的数据的可复制示例:

t = pd.DataFrame({'id':{0:'01001',1:'01001',2:'01001',3:'01001',4:'01002',5:'01002',6:'01002',7:'01002'},
'x':{0:0.0,1:0.5,2:0,3:0,4:0.0,
5:0.0,6:0.06675245612859726,7:0.13350491651818122},
'year':{0:2015,1:2016,2:2017,3:2018,4:2015,5:2016,6:2017,7:2018}})
t

最佳答案

让我们试试 transform :

df['y'] = (df.index > (df['x']>0).groupby(df['id']).transform('idxmax')).astype(int)
df
id year x out
0 1001 2015 0.000000 0
1 1001 2016 0.500000 0
2 1001 2017 0.000000 1
3 1001 2018 0.000000 1
4 1002 2015 0.000000 0
5 1002 2016 0.000000 0
6 1002 2017 0.066753 0
7 1002 2018 0.133505 1

关于python - 第一次组在 Pandas DataFrame 中满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69591805/

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