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

2024-04-19 12:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我使用的代码:

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

如有任何澄清,将不胜感激。谢谢!你知道吗


Tags: to数据代码dataframedfdatetimedate时间
2条回答

正如在注释中提到的,您真的不需要循环。 但是回答你的确切问题,你的错误来源是这样的表达: if df[(df['created_at'] >= '2019-03-15')]:。你知道吗

实际上,操作df[some_condition_here]返回一个新的DataFrame,并且不清楚如何将DataFrame强制转换为boolean(它也适用于任何类:dog = new Dog()实例是true还是false?)

这就是为什么你会犯错。你知道吗

或者你也可以用np.哪里函数来获取条件

df['within_date_range'] = np.where(df['created_at'] >= '2019-03-15', 'True', 'False')

相关问题 更多 >