我有一个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),每次将结果追加一次,但是得到的是一个空数组或类似的内容

[[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中 append date_range(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32137320/

10-09 14:32