使用for循环遍历pandas数据框中的日期范围

时间:2019-05-21 19:23:36

标签: python pandas loops date

我试图遍历数据帧每一行中的时间戳,以查看该时间戳是在特定日期之前还是之后。另外,我想在数据框中创建一个新列,以指定日期是在指定日期之前还是之后。

这是我正在使用的代码:

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().

任何澄清将不胜感激。谢谢!

2 个答案:

答案 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')