gpt4 book ai didi

python Pandas : Create Column That Acts As A Conditional Running Variable

转载 作者:行者123 更新时间:2023-11-28 20:01:42 27 4
gpt4 key购买 nike

我正在尝试创建一个新的数据框列,该列充当运行变量,在某些条件下重置为零或“通过”。下面是我想要完成的一个简化示例。假设我正在尝试戒掉咖啡,并且我正在记录我连续几天没有喝咖啡。在我忘记记下自己是否喝了咖啡的日子里,我输入“忘记”,我的记录不会受到影响。

下面是我目前是如何实现的,不过我怀疑还有更有效的方法。

提前致谢!

import pandas as pd

Day = [1,2,3,4,5,6,7,8,9,10,11]
DrankCoffee = ['no','no','forgot','yes','no','no','no','no','no','yes','no']

df = pd.DataFrame(list(zip(Day,DrankCoffee)), columns=['Day','DrankCoffee'])

df['Streak'] = 0

s = 0

for (index,row) in df.iterrows():
if row['DrankCoffee'] == 'no':
s += 1
if row['DrankCoffee'] == 'yes':
s = 0
else:
pass

df.loc[index,'Streak'] = s

enter image description here

最佳答案

你可以使用groupby.transform

对于每个 streak,您正在寻找的是这样的:

def my_func(group):
return (group == 'no').cumsum()

你可以通过简单的比较和cumsum

来划分不同的条纹

streak = (df['DrankCoffee'] == 'yes').cumsum()
0     0
1 0
2 0
3 1
4 1
5 1
6 1
7 1
8 1
9 2
10 2

然后应用变换

df['Streak'] = df.groupby(streak)['DrankCoffee'].transform(my_func)

关于 python Pandas : Create Column That Acts As A Conditional Running Variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50143741/

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