【发布时间】:2019-08-24 03:49:47
【问题描述】:
假设我有一个包含两列的数据框
Start End
1/1/2015 1/5/2015
1/10/2015 1/12/2015
获取开始和结束日期之间的日期(实际日期,而不是中间的天数)的最佳方法是什么,包括开始日期和结束日期。
例如,我会得到 2015 年 1 月 1 日、2015 年 1 月 2 日、...、2015 年 1 月 5 日。
我想这样做的原因是要找出两个日期之间有多少个周末。
这是示例数据框以及快速解析日期的代码。
def lookup(s):
"""
This is an extremely fast approach to datetime parsing.
For large data, the same dates are often repeated. Rather than
re-parse these, we store all unique dates, parse them, and
use a lookup to convert all dates.
"""
dates = {date:pd.to_datetime(date) for date in s.unique()}
return s.map(dates)
df = pd.DataFrame({"Start": ["1/1/2015", "1/10/2015"], "End": ["1/5/2015", "1/12/2015"]})
df["Start"] = lookup(df["Start"])
df["End"] = lookup(df["End"])
如果有人知道更好的方法,请告诉我,因为我认为有更好的方法来查找两个日期之间的周末数。
我试图理解 pd.date_range() 函数并尝试像这样应用它。
df["between"] = pd.date_range(df["Start"], df["End"])
但是得到一个错误说它不能转换输入,我知道我错误地使用了这个函数。我想我需要使用 apply 但不确定如何将它与此功能一起使用。
感谢任何帮助。如果您需要更多信息,请告诉我。
感谢您的宝贵时间。
【问题讨论】:
-
您可能想count the number of weeks between two dates,而不是枚举日期(如果日期相距很远,这可能效率低下)。
标签: python pandas date datetime