大佬教程收集整理的这篇文章主要介绍了如何复制 12 个周期的数据帧行并将周期名称添加到每一行?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在提取项目列表,仅显示项目编号和项目状态。 我现在需要做的是将这些复制 11 次并为一年中的每个月/期间添加一列。 所以我们将有:
项目 | 状态 | 期间 |
---|---|---|
101 | 打开 | JAN-21 |
101 | 打开 | 2 月 21 日 |
101 | 打开 | @H_879_16@mAR-21|
.... | ||
101 | 打开 | 12 月 21 日 |
102 | 关闭 | JAN-21 |
102 | 关闭 | 2 月 21 日 |
等等等等
我已经开始工作了,但它非常慢,我刚刚开始学习 Python,到目前为止,Python 的其他一切似乎都非常快,所以希望有更好的解决方案,这就是我所拥有的通过猜测、反复试验和 Google:
"""Repeat df for the 12 months"""
df = pd.concat([df]*12)
df.sort_values(by=['Project'])
data = df
data.sort_index(inplace=TruE)
data.reset_index(inplace=TruE)
df = data
"""Add the 12 periods to df"""
for project in df['Project']:
periodindexnames = df[(df['Project'].str.fullmatch(project))].index
periodcolumn = df['Period']
snapShotcolumn = df['Project']
periodcolumn[periodindexnames] = pd.date_range(start='1/1/2021',periods=12,freq='M')
我们有大约。 24,000 个项目。
IIUC,如果您有这样的数据框 df
:
Project Status
0 101 Open
1 102 Closed
您可以将日期范围重复放入第三列,然后explode
它,即
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
,
import pandas
import numpy
x = numpy.arange(1,24000)
months = pandas.DataFrame(pandas.date_range('2021-01-01','2022-01-01',freq='M'))
projects = pandas.DataFrame(X)
%time projects_status = projects.merge(pandas.DataFrame(months),how='cross')
#CPU times: user 25.8 ms,sys: 2.54 ms,@R_969_10586@l: 28.3 ms
#Wall time: 35.9 ms
以上是大佬教程为你收集整理的如何复制 12 个周期的数据帧行并将周期名称添加到每一行?全部内容,希望文章能够帮你解决如何复制 12 个周期的数据帧行并将周期名称添加到每一行?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。