程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何复制 12 个周期的数据帧行并将周期名称添加到每一行?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何复制 12 个周期的数据帧行并将周期名称添加到每一行??

开发过程中遇到如何复制 12 个周期的数据帧行并将周期名称添加到每一行?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何复制 12 个周期的数据帧行并将周期名称添加到每一行?的解决方法建议,希望对你解决如何复制 12 个周期的数据帧行并将周期名称添加到每一行?有所启发或帮助;

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

@H_879_16@mAR-21
项目 状态 期间
101 打开 JAN-21
101 打开 2 月 21 日
101 打开
....
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,请注明来意。