我有一个这样的数据帧:
date1 = pd.Series(pd.date_range('2018-1-1 12:00:00',periods = 2, freq='M'))
date2 = pd.Series(pd.date_range('2019-3-11 21:45:00',periods = 2, freq='W'))
date_df =pd.DataFrame(dict(Start_date = date1, End_date = date2))
date_df['hour'] = date_df['End_date'].dt.time
date_df返回此数据帧:
Start_date End_date hour
0 2018-01-31 12:00:00 2019-03-17 21:45:00 21:45:00
1 2018-02-28 12:00:00 2019-03-24 21:45:00 21:45:00我尝试了以下代码:
def new (date_df):
if(date_df[hour] < datetime.time(hour=21, minute=46, second=0))
return 1
else:
return 0
date_df['NewColumn']=date_df.apply(new,axis=1)返回错误
File "<ipython-input-263-d67d4f9334fd>", line 2
if(date_df[hour] < datetime.time(hour=21, minute=46, second=0))
^
SyntaxError: invalid syntax我尝试使用这种方法,因为它对我的特定工作更具可读性。
我该如何更改代码?
发布于 2021-06-17 08:14:31
你在这里混合了一些东西。对于First,您可能需要使用
from datetime import datetime, time(强调时间)
第二个,使用lambda,这样:
date_df['NewColumn']=date_df.apply(lambda x: new(x['hour']),axis=1)第三个小时,您的函数:查看参数和时间
def new(hour):
if(hour < time(hour=21, minute=46, second=0)):
return 1
else:
return 0结果:
Start_date End_date hour NewColumn
0 2018-01-31 12:00:00 2019-03-17 21:45:00 21:45:00 1
1 2018-02-28 12:00:00 2019-03-24 21:45:00 21:45:00 1旁注:使用正确的函数名并避免使用new (它在这里是完全合法的,但在其他语言中它是一个关键字)
https://stackoverflow.com/questions/68011310
复制相似问题