Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x datetime64[ns]的逻辑语句_Python 3.x_Pandas_Python Datetime_Loc - Fatal编程技术网

Python 3.x datetime64[ns]的逻辑语句

Python 3.x datetime64[ns]的逻辑语句,python-3.x,pandas,python-datetime,loc,Python 3.x,Pandas,Python Datetime,Loc,我在使用df.loc时遇到以下错误。我有一个参数s,它是datetime64[ns],我有一个数据帧,它有两个列MDT1和MTD2,这也是datetime64[ns]类型。当我使用df.loc使用以下语句时 s= df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str) s = pd.to_datetime(s) df_1x2.loc[(s>df_1x2['MDT1'])&(s<df_1x2['MDT2']),'M

我在使用
df.loc
时遇到以下错误。我有一个参数s,它是datetime64[ns],我有一个数据帧,它有两个列MDT1和MTD2,这也是datetime64[ns]类型。当我使用df.loc使用以下语句时

s= df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
s = pd.to_datetime(s)
df_1x2.loc[(s>df_1x2['MDT1'])&(s<df_1x2['MDT2']),'Morning']= s
但是,当我第二次运行时,它会按预期工作。只是Jupyter笔记本的第一次运行让我犯了错误

以下是下载示例数据文件的链接:

代码如下:

s = pd.to_datetime(df['Date']).astype(str)+' '+df['Time.1'].astype(str)+':00'
df['Matchdate'] = pd.to_datetime (s)

d =np.reciprocal(df_1x2[['Home','Draw','Away']].astype(float))

df_1x2['Margin'] = d.sum(axis = 1)-1
df_1x2['Open_DT'] = df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
df_1x2['Open_DT'] = pd.to_datetime(df_1x2['Open_DT'])
df_1x2['Open_DT1'] = df_1x2.groupby(['Match','Odds_Type'])['Open_DT'].transform(min)
s = df_1x2['Open_DT'] == df_1x2['Open_DT1']
df_1x2.loc[s,'Open'] ='Opening'


df_1x2['Current_DT'] = df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
df_1x2['Current_DT'] = pd.to_datetime(df_1x2['Current_DT'])
df_1x2['Current_DT1'] = df_1x2.groupby(['Match','Odds_Type'])['Current_DT'].transform(max)
sc = df_1x2['Current_DT'] == df_1x2['Current_DT1']
df_1x2.loc[sc,'Current'] ='Current'
df_1x2.loc[df_1x2.Open == 'Opening','Current']='Opening'

df_1x2 ['morning Date'] = pd.Timestamp.today()
Time1 = '08:00:00'
Time2 = '11:00:00'
s = df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
s = pd.to_datetime(s)
df_1x2.reset_index(drop = True, inplace = True)

df_1x2 ['morning Date'] = pd.to_datetime(df_1x2 ['morning Date']).dt.date
df_1x2['MDT1'] = pd.to_datetime(df_1x2['morning Date'].astype(str)+' '+Time1)


df_1x2['MDT2'] = pd.to_datetime(df_1x2['morning Date'].astype(str)+' '+Time2)

df_1x2 .reset_index(drop= True, inplace = True)



df_1x2.loc[(s>df_1x2['MDT1'])&(s<df_1x2['MDT2']),'Morning']= s
s=pd.to_datetime(df['Date']).astype(str)+''+df['Time.1']).astype(str)+':00'
df['Matchdate']=pd.to_日期时间
d=np.倒数(df_1x2[[Home','Draw','Away']].aType(float))
df_1x2[‘裕度’]=d.和(轴=1)-1
df_1x2['Open_DT']=df_1x2['date'].astype(str)+'-'+df_1x2['Time'].astype(str)
df_1x2['Open_DT']=pd.to_datetime(df_1x2['Open_DT']))
df_1x2['Open_DT1']=df_1x2.groupby(['Match','doubs_Type'])['Open_DT'].转换(分钟)
s=df_1x2['Open_DT']==df_1x2['Open_DT1']
df_1x2.loc[s,'Open']=“Opening”
df_1x2['Current_DT']=df_1x2['date'].astype(str)+'-'+df_1x2['Time'].astype(str)
df_1x2['Current_DT']=pd.to_datetime(df_1x2['Current_DT']))
df_1x2['Current_DT1']=df_1x2.groupby(['Match','doffics_Type'])['Current_DT'].transform(max)
sc=df_1x2['Current_DT']==df_1x2['Current_DT1']
df_1x2.loc[sc,'Current']='Current'
df_1x2.loc[df_1x2.Open=='Opening','Current']='Opening'
df_1x2['morning Date']=pd.Timestamp.today()
时间1='08:00:00'
时间2='11:00:00'
s=df_1x2['date'].astype(str)+'-'+df_1x2['Time'].astype(str)
s=pd.to_日期时间(s)
df_1x2.重置_索引(drop=True,inplace=True)
df_1x2[“上午日期”]=pd.to_datetime(df_1x2[“上午日期”]).dt.Date
df_1x2['MDT1']=pd.to_datetime(df_1x2['morning Date'].astype(str)+''+Time1)
df_1x2['MDT2']=pd.to_datetime(df_1x2['morning Date'].astype(str)+''+Time2)
df_1x2.重置_索引(drop=True,inplace=True)

df_1x2.loc[(s>df_1x2['MDT1'])和(s您正在将整个系列
s
应用于过滤后的数据帧列。我认为只使用
mask
np.where
而不是
。loc

df_1x2['Morning'] = df_1x2['Morning'].mask((s > df_1x2['MDT1']) & (s < df_1x2['MDT2']), s)

如果该列尚不存在,请使用:

df_1x2['Morning'] = np.where((s > df_1x2['MDT1']) & (s < df_1x2['MDT2']), s, np.datetime64('NaT'))

你能复制粘贴
df_1x2
@wwnde你是说整个数据帧吗?如果你没有找到解决方案,只需头部就可以了。我将上传csv文件粘贴问题中的代码。嗨@David Erickson,很遗憾,“早上”一栏在此步骤之前不存在,因此我也得到了错误。我将附加包含data@Zephyr在您的条件之外,另一种结果是什么?您刚才提到的是您的问题。您不能将基于带条件的筛选数据帧的列添加到数据帧,因为长度不相等。例如,如果备选结果为
np.nan
,请查看我的更新答案。不幸的是,它仍然给了我相同的错误值错误:只能比较标记相同的系列对象。我认为它在重新运行两次后有效。非常感谢。这意味着我仍然可以应用df.loc,但重置后索引给我带来了问题。非常感谢David。
df_1x2['Morning'] = np.where((s > df_1x2['MDT1']) & (s < df_1x2['MDT2']), s, df_1x2['Morning'])
df_1x2['Morning'] = np.where((s > df_1x2['MDT1']) & (s < df_1x2['MDT2']), s, np.datetime64('NaT'))
s = pd.to_datetime(df['Date']).astype(str)+' '+df['Time.1'].astype(str)+':00'
df['Matchdate'] = pd.to_datetime (s)

d =np.reciprocal(df_1x2[['Home','Draw','Away']].astype(float))

df_1x2['Margin'] = d.sum(axis = 1)-1
df_1x2['Open_DT'] = df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
df_1x2['Open_DT'] = pd.to_datetime(df_1x2['Open_DT'])
df_1x2['Open_DT1'] = df_1x2.groupby(['Match','Odds_Type'])['Open_DT'].transform(min)
s = df_1x2['Open_DT'] == df_1x2['Open_DT1']
df_1x2.loc[s,'Open'] ='Opening'


df_1x2['Current_DT'] = df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
df_1x2['Current_DT'] = pd.to_datetime(df_1x2['Current_DT'])
df_1x2['Current_DT1'] = df_1x2.groupby(['Match','Odds_Type'])['Current_DT'].transform(max)
sc = df_1x2['Current_DT'] == df_1x2['Current_DT1']
df_1x2.loc[sc,'Current'] ='Current'
df_1x2.loc[df_1x2.Open == 'Opening','Current']='Opening'

df_1x2 ['morning Date'] = pd.Timestamp.today()
Time1 = '08:00:00'
Time2 = '11:00:00'

########### I moved s from here...........

df_1x2.reset_index(drop = True, inplace = True)

df_1x2 ['morning Date'] = pd.to_datetime(df_1x2 ['morning Date']).dt.date
df_1x2['MDT1'] = pd.to_datetime(df_1x2['morning Date'].astype(str)+' '+Time1)


df_1x2['MDT2'] = pd.to_datetime(df_1x2['morning Date'].astype(str)+' '+Time2)

df_1x2 .reset_index(drop= True, inplace = True)

########### .........to here. 
##### Resetting the  index after defining s, means you can no longer compare directly to your dataframe as s has a different index than your dataframe now.

s = df_1x2['date'].astype (str)+'-'+ df_1x2['Time'].astype(str)
s = pd.to_datetime(s)


df_1x2.loc[(s>df_1x2['MDT1'])&(s<df_1x2['MDT2']),'Morning']= s