【发布时间】:2019-10-08 06:03:32
【问题描述】:
我正在尝试遍历数据帧每一行中的时间戳,以查看该时间戳是在特定日期之前还是之后。另外,我想在数据框中创建一个新列,指定日期是在指定日期之前还是之后。
这是我正在使用的代码:
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().
任何澄清将不胜感激。
【问题讨论】:
-
为什么要循环?
df['within_date_range'] = df.created_at.ge('2019-03-15') -
正如 ~@ALollz 评论的那样,您不需要循环执行此操作。但是如果您确实想循环,请注意在循环中您没有使用
row,而是在每次迭代时查询整个数据帧。基本上,在if子句中,您将传递为created_at大于2019-03-15的行过滤的数据框。显然,数据框不是 True 或 False,这就是为什么你会得到The truth value of a DataFrame is ambiguous -
谢谢@ALollz。那成功了。我不知道 Pandas 大于等于函数。非常整洁:pandas.pydata.org/pandas-docs/stable/reference/api/…