Python 如何为12个周期复制数据帧行,并将周期名称添加到每一行?
我正在提取一个项目列表,只显示项目编号和项目状态。 我现在需要做的是复制这11次,并为一年中的每个月/期间添加一列。 因此,我们将有: 项目 地位 时期 101 打开 一月二十一日 101 打开 二月二十一日 101 打开 三月二十一日 .... 101 打开 十二月二十一日 102 关闭 一月二十一日 102 关闭 二月二十一日Python 如何为12个周期复制数据帧行,并将周期名称添加到每一行?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在提取一个项目列表,只显示项目编号和项目状态。 我现在需要做的是复制这11次,并为一年中的每个月/期间添加一列。 因此,我们将有: 项目 地位 时期 101 打开 一月二十一日 101 打开 二月二十一日 101 打开 三月二十一日 .... 101 打开 十二月二十一日 102 关闭 一月二十一日 102 关闭 二月二十一日 IIUC,如果您有这样的数据帧df: Project Status 0 101 Open 1 102 Closed 您可以重复将日期范
IIUC,如果您有这样的数据帧
df
:
Project Status
0 101 Open
1 102 Closed
您可以重复将日期范围放入第三列,然后将其分解,即
dates = pd.date_range(start="1/1/2021", periods=12, freq="M")
df["Period"] = [dates] * len(df)
df = df.explode("Period")
得到
Project Status Period
0 101 Open 2021-01-31
0 101 Open 2021-02-28
0 101 Open 2021-03-31
0 101 Open 2021-04-30
0 101 Open 2021-05-31
0 101 Open 2021-06-30
0 101 Open 2021-07-31
0 101 Open 2021-08-31
0 101 Open 2021-09-30
0 101 Open 2021-10-31
0 101 Open 2021-11-30
0 101 Open 2021-12-31
1 102 Closed 2021-01-31
1 102 Closed 2021-02-28
1 102 Closed 2021-03-31
1 102 Closed 2021-04-30
1 102 Closed 2021-05-31
1 102 Closed 2021-06-30
1 102 Closed 2021-07-31
1 102 Closed 2021-08-31
1 102 Closed 2021-09-30
1 102 Closed 2021-10-31
1 102 Closed 2021-11-30
1 102 Closed 2021-12-31
导入熊猫
进口numpy
x=numpy.arange(124000)
月份=熊猫。数据帧(熊猫。日期范围('2021-01-01','2022-01-01',频率='M'))
projects=pandas.DataFrame(x)
%time projects\u status=projects.merge(pandas.DataFrame(月),how='cross')
#CPU时间:用户25.8毫秒,系统2.54毫秒,总计28.3毫秒
#墙壁时间:35.9毫秒
很抱歉格式问题,它在查看屏幕中看起来更好,希望它很清楚。感谢Mustafa的回答和编辑我的问题!它工作得很好。