我试图遍历数据帧每一行中的时间戳,以查看该时间戳是在特定日期之前还是之后。另外,我想在数据框中创建一个新列,以指定日期是在指定日期之前还是之后。
这是我正在使用的代码:
df['created_at'] = pd.to_datetime(df['created_at'], errors='coerce')
for row in df.iterrows():
if df[(df['created_at'] >= '2019-03-15')]:
df['within_date_range'] = "True"
else:
df['within_date_range'] = "False"
但是,上面的代码给了我这个错误:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
任何澄清将不胜感激。谢谢!
答案 0 :(得分:2)
正如评论中提到的那样,您实际上不需要循环。
但是回答您的确切问题,错误的根源是以下表达式:
if df[(df['created_at'] >= '2019-03-15')]:
。
实际上,操作df[some_condition_here]
返回一个新的DataFrame
,目前尚不清楚如何将DataFrame
转换为boolean
值(也适用于任何类:dog = new Dog()
实例是对还是错?)
这就是为什么出现错误的原因。
答案 1 :(得分:1)
或者您也可以使用np.where函数获取条件
df['within_date_range'] = np.where(df['created_at'] >= '2019-03-15', 'True', 'False')