Python 如何为12个周期复制数据帧行,并将周期名称添加到每一行?

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 您可以重复将日期范

我正在提取一个项目列表,只显示项目编号和项目状态。 我现在需要做的是复制这11次,并为一年中的每个月/期间添加一列。 因此,我们将有:

项目 地位 时期 101 打开 一月二十一日 101 打开 二月二十一日 101 打开 三月二十一日 .... 101 打开 十二月二十一日 102 关闭 一月二十一日 102 关闭 二月二十一日
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的回答和编辑我的问题!它工作得很好。