我正在尝试生成两个日期列之间的所有月份。我有以下 Dataframe :
| 开始日期|结束日期|
| - ------|- ------|
| 二○一○年一月十五日|二零一零年八月十五日|
| 二○ ○九年一月七日|二○一○年一月十三日|
我想要的输出是添加一个月份列,其中包括StartDate和EndDate列之间所有可用的月份。
输出:
| 开始日期|结束日期|月份|
| - ------|- ------|- ------|
| 二○一○年一月十五日|二零一零年八月十五日|一、二、三、四、五、六、七、八|
| 二○ ○九年一月七日|二○一○年一月十三日|七、八、九、十、十一、十二、一|
我试着写了这段代码,但它并不像我想要的那样工作。
date_range= lambda x:range (x['StartDate'].month,x['EndDate'].month+1)
df=df.assign(month=df.apply(date_range, axis=1)
3条答案
按热度按时间e0uiprwp1#
我们可以使用 * dateutil. rrule * 来完成此操作
2hh7jdfx2#
按
Series.dt.to_period
创建日期时间为的月份期间,然后按压缩的Series
创建period_range
,并提取月份:如果需要通过
,
连接字符串,请用途:7eumitmz3#
以下是仅使用pandas.date_range和numpy.vectorize的矢量化解决方案
它返回一个表,看起来像您描述的那个。
| 开始日期|结束日期|月份|
| - ------|- ------|- ------|
| 2010年1月15日|2010年8月15日|一、二、三、四、五、六、七、八|
| 二○ ○九年七月一日|2010年1月13日|七、八、九、十、十一、十二、一|