我有一个 csv 文件,其中包含开始日期和结束日期,格式为 dd/mm/yy
。
这些阅读者:
dateparse = lambda x: pnd.datetime.strptime(x, '%d/%m/%y')
df = pnd.read_csv('file.csv',sep=';',parse_dates=['StartDate','EndDate'], date_parser=dateparse)
数据框的示例如下所示:
StartDate EndDate
0 2015-07-15 2015-07-18
1 2015-06-06 2015-06-08
我想在新数据帧的列中获取这些间隔中列出的所有日期:
Date
0 2015-07-15
1 2015-07-16
2 2015-07-17
3 2015-07-18
4 2015-06-06
5 2015-06-07
6 2015-06-08
我迭代地使用date_range(StartDate, EndDate)
,每次都 append 结果,但我得到的要么是一个空数组,要么是类似的东西
[[2015-07-15, 2015-07-16, 2015-07-17, 2015-07-18], [ 2015-06-06, 2015-06-07 , 2015-06-08 ]]
我愿意
[ 2015-07-15, 2015-07-16, 2015-07-17, 2015-07-18, 2015-06-06, 2015-06-07 , 2015-06-08 ]
要做什么?
最佳答案
您可以使用 itertools.chain
将范围链接在一起来创建日期列表:
from itertools import chain
new_df = pnd.DataFrame(list(chain.from_iterable(pnd.date_range(r["StartDate"],r["EndDate"])
for _,r in df.iterrows())), columns=("Date",))
输出:
Date
0 2015-07-15
1 2015-07-16
2 2015-07-17
3 2015-07-18
4 2015-06-06
5 2015-06-07
6 2015-06-08
关于python - 在 Python 中使用 date_range() 追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137320/