我有一个数据集,其中一个输入包含日期和时间。
首先,我编写了代码来查找 X3 列中 5 值的第一个时间,然后将该时间转换为 0。
然后我尝试将 timedelta(hours=1) 添加到范围为 6 的内容中。
然后它给了我这个错误"unsupported operand type(s) for +: 'bool' and 'datetime.timedelta'"
谁能帮我解决这个错误?
my code:
data =pd.read_csv('data6.csv')
data['time_diff']= pd.to_datetime(data['date'] + " " + data['time'],
format='%d/%m/%Y %H:%M:%S', dayfirst=True)
mask = data['X3'].eq(5)
data['duration'] = data[mask].drop_duplicates(['date','X3']).groupby(['date','X3'])['time_diff'].transform('first')
data['duration'] = data['time_diff'].sub(data['duration']).dt.total_seconds().div(3600)
date time x3 Time(expected)
10/3/2018 6:15:00 0 NaN
10/3/2018 6:45:00 5 0.0
10/3/2018 7:45:00 0 NaN
10/3/2018 9:00:00 0 NaN
10/3/2018 9:25:00 7 NaN
10/3/2018 9:30:00 0 NaN
10/3/2018 11:00:00 0 NaN
10/3/2018 11:30:00 0 NaN
10/3/2018 13:30:00 0 NaN
10/3/2018 13:50:00 5 NaN
10/3/2018 15:00:00 0 NaN
10/3/2018 15:25:00 0 NaN
10/3/2018 16:25:00 0 NaN
10/3/2018 18:00:00 7 NaN
10/3/2018 19:00:00 0 NaN
10/3/2018 19:30:00 0 NaN
10/3/2018 20:00:00 0 NaN
10/3/2018 22:05:00 0 NaN
10/3/2018 22:15:00 5 NaN
10/3/2018 23:40:00 0 NaN
10/4/2018 6:58:00 5 0.0
10/4/2018 13:00:00 0 NaN
10/4/2018 16:00:00 7 NaN
10/4/2018 17:00:00 7 NaN
所以这里我有一个求和方程来应用于 X3 列值。
然后根据这个求和方程我想取每小时X3的值。
这就是为什么我首先找到每天提及值5的开始时间,然后将该时间转换为0:00:00。
然后从该开始时间加上一小时一小时直到 6 小时,我需要获取 A 的值。
对于 A 方程为:
A = X3(5) - M
所以首先我单独拍了第一次,只拍了0次。
为此,我使用了代码:
time= data['duration'].eq(0)
然后我在类里面写了这个方程方法
time=0
M=0
for _ in range(len(data['X3'])):
if X3.all()==5:
if time ==data['duration'].eq(5).all():
M=X3
for i in (time + timedelta(hours=1*it) for it in range(6)):
M = 5 - 0.0015 * np.sum(i*X3)
print(M)
然后得到的值只有 0 。
然后这个错误就来了。
从这些代码中我期望的输出是:
time expected output
0 (start time of x3 value of 5) 5
1 hr 5-0.3(according to the summation equation) = 4.7
2hr 5-0.6=4.4
3hr 5-0.9=4.1
4hr 5-1.2=3.8
5hr 5-1.5=3.5
6hr 5-1.8=3.2