gpt4 book ai didi

python - Dataframe - 根据 2 个标准计算列以查找日/夜

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

我有一个Date 列和一个Toggle 列,当太阳下山时它为True。现在,我需要一个计算列来说明现在是晚上还是白天。

enter image description here

true 之前是白天,然后是晚上,直到 date 列发生变化。

我创建了一些代码,但我对它不满意,因为它效率低下(for 循环)。

for i in range(0, len(DF)): 

j = DF.columns.get_loc('Toggle')
k = DF.columns.get_loc('Day/Night') # This is just a copy of the index which is datetime
l = DF.columns.get_loc('Date')

if DF.iat[i, j] == True:
DF['Day/Night'].values[i] = 'Night'

elif DF.iat[i - 1, k] == 'Night' and DF.iat[i, l] == DF.iat[i - 1, l]:
DF['Day/Night'].values[i] = 'Night'

else:

DF['Day/Night'].values[i] = 'Day'
Date,Toggle
11/11/2018,FALSE
11/11/2018,FALSE
11/11/2018,TRUE
11/11/2018,FALSE
11/11/2018,FALSE
11/11/2018,FALSE
11/12/2018,FALSE
11/12/2018,FALSE
11/12/2018,FALSE
11/12/2018,TRUE
11/12/2018,FALSE

最佳答案

使用groupby + numpy.where :

indicator = df.groupby('Date')['Toggle'].cumsum()

df['Day/Night'] = np.where(indicator, 'Night', 'Day')

print(df)

输出

         Date  Toggle Day/Night
0 2018-11-11 False Day
1 2018-11-11 False Day
2 2018-11-11 True Night
3 2018-11-11 False Night
4 2018-11-11 False Night
5 2018-11-11 False Night
6 2018-11-12 False Day
7 2018-11-12 False Day
8 2018-11-12 False Day
9 2018-11-12 True Night
10 2018-11-12 False Night

关于python - Dataframe - 根据 2 个标准计算列以查找日/夜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921723/

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