gpt4 book ai didi

python - 如果在时间范围内,则更改列的值

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:36 24 4
gpt4 key购买 nike

如果一列的值落在以下时间(17:00 到 23:00)之间,我将尝试修改它们,否则,它们必须保持相同的值。这是我的代码:

lclstd['Response KWH/hh (per half hour) ']=lclstd['KWH/hh (per half hour) '].astype(float)

从日期时间列中提取时间

lclstd['Time']=pd.to_datetime(lclstd['DateTime']).dt.strftime ('%H:%M:%S')

仅在 17:00 至 23:00 的高峰时段分配响应

lclstd.loc[(lclstd['Time'] == '17:00:00') | (lclstd['Time'] == '17:30:00') | (lclstd['Time'] == '18:00:00') | (lclstd['Time'] == '18:30:00') | (lclstd['Time'] == '19:00:00') | (lclstd['Time'] == '19:30:00') | (lclstd['Time'] == '20:00:00') | (lclstd['Time'] == '20:30:00') | (lclstd['Time'] == '21:00:00') | (lclstd['Time'] == '21:30:00') | (lclstd['Time'] == '22:00:00') | (lclstd['Time'] == '22:30:00') | (lclstd['Time'] == '23:00:00') , 'Response KWH/hh (per half hour) '] = 0.9*lclstd['Response KWH/hh (per half hour) ']

但我收到以下错误

ValueError: cannot reindex from a duplicate axis

最佳答案

pd.Series.dt.time返回datetime.time对象。所以你可以通过 pd.Series.between 进行比较创建蒙版。然后喂给loc :

from datetime import time

time1, time2 = time(17), time(23) # 17:00, 23:00

df['Time'] = pd.to_datetime(df['Time']) # convert to datetime if necessary
mask = df['Time'].dt.time.between(time1, time2) # inclusive of boundaries by default

df.loc[mask, 'Response KWH/hh (per half hour) '] *= 0.9

关于python - 如果在时间范围内,则更改列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53209042/

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