如何创建包含每月首日和末日的Pandas DataFrame
问题描述
需要创建如下结构的DataFrame:
0 2022-01-01 1 2022-01-31 2 2022-02-01 3 2022-02-28 4 2022-03-01 5 2022-03-31
尝试了以下代码但未解决问题:
dfpd.date_range(start = '1/1/2022', end ='6/30/2022', freq='M'),
解决方案
你得同时生成每月1号和月末的日期,再合并排序才能得到目标结果。具体步骤如下:
- 先导入pandas,生成月初日期序列(用
freq='MS'表示每月起始):
import pandas as pd start_dates = pd.date_range(start='2022-01-01', end='2022-03-31', freq='MS')
- 生成月末日期序列(用
freq='M'):
end_dates = pd.date_range(start='2022-01-01', end='2022-03-31', freq='M')
- 把两个序列合并、排序,再转成DataFrame:
combined_dates = pd.concat([pd.Series(start_dates), pd.Series(end_dates)]).sort_values().reset_index(drop=True) df = pd.DataFrame(combined_dates, columns=['date'])
运行后就能得到你要的结构:
date 0 2022-01-01 1 2022-01-31 2 2022-02-01 3 2022-02-28 4 2022-03-01 5 2022-03-31
另外提一句,你原代码里有两个小问题:一是dfpd应该写成pd(前提是已经执行了import pandas as pd),二是代码末尾多了个多余的逗号。
内容的提问来源于stack exchange,提问作者Skip
相关产品推荐
相关产品推荐

