【发布时间】:2019-01-29 06:07:53
【问题描述】:
我正在尝试添加一个包含具有这种条件的标签的新列:
- 标签 1 如果 'time' 中的值与 dt 之间的时间差
- 标签 0 表示其他情况
我目前的想法:
df = pd.read_csv('./datetimecek.csv')
df['time'] = pd.to_datetime(df['datetime'])
dt = datetime.strptime("19/02/18 19:00", "%d/%m/%y %H:%M")
datetime time
2018/02/19 16:00 2018-02-19 16:00:00
2018/02/19 17:00 2018-02-19 17:00:00
2018/02/19 18:00 2018-02-19 18:00:00
2018/02/19 19:00 2018-02-19 19:00:00
然后我定义了 timedelta
a = timedelta(hours=2)
def label(c):
if dt - df['time'] < a:
return '1'
else:
return '0'
然后
df['label'] = df.apply(label, axis=1)
但我得到了错误:'Series 的真值是模棱两可的。使用 a.empty, a.bool()...
有没有办法解决这个问题?
【问题讨论】:
-
我认为您的意思是在
label的函数定义中使用c,而不是在全局范围内使用整个df。
标签: python pandas datetime dataframe