dataframe填充列带有先前的值,直到条件

发布于 2025-02-10 07:20:57 字数 1325 浏览 5 评论 0原文

我有一个看起来像这样的数据框架:

步骤文本参数
15打印1
16控件2
17打印输出3
18print21
19nan2
20nan3 22 nan 3
21nan4
22nan1
23nan 2 nan2
24nan1

,我希望我的dataframe看起来像此:

步骤文本参数
15打印1
15打印2
15打印3
16控制1
16控制2
17控制3
17控制4
18打印输出1
18打印输出2
19print 21

因此,基本上我在参数列中“ 1”时,我需要步骤和文本的下一个值。 有什么想法吗?:)

I have a dataframe that looks like this:

StepTextParameter
15print1
16control2
17printout3
18print21
19Nan2
20Nan3
21Nan4
22Nan1
23Nan2
24Nan1

And I want my dataframe to look like this:

StepTextParameter
15print1
15print2
15print3
16control1
16control2
17control3
17control4
18printout1
18printout2
19print21

So basically when I have "1" in Parameter column, I need the next value from Step and Text.
Any ideas?:)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柠檬心 2025-02-17 07:20:57

您可以在自定义组上使用重复

# ensure NaN
df['Text'] = df['Text'].replace('Nan', pd.NA)

# get the number of rows per group starting with 1
n = df.groupby(df['Parameter'].eq(1).cumsum()).size()

# repeat the index of the non NaN values as many times
idx = df['Text'].dropna().index.repeat(n)

# replace the values ignoring the index
# (using the underlying numpy array)
df[['Step', 'Text']] = df.loc[idx, ['Step', 'Text']].to_numpy()

输出:

  Step      Text  Parameter
0   15     print          1
1   15     print          2
2   15     print          3
3   16   control          1
4   16   control          2
5   16   control          3
6   16   control          4
7   17  printout          1
8   17  printout          2
9   18    print2          1

You can use repeat on a custom group:

# ensure NaN
df['Text'] = df['Text'].replace('Nan', pd.NA)

# get the number of rows per group starting with 1
n = df.groupby(df['Parameter'].eq(1).cumsum()).size()

# repeat the index of the non NaN values as many times
idx = df['Text'].dropna().index.repeat(n)

# replace the values ignoring the index
# (using the underlying numpy array)
df[['Step', 'Text']] = df.loc[idx, ['Step', 'Text']].to_numpy()

output:

  Step      Text  Parameter
0   15     print          1
1   15     print          2
2   15     print          3
3   16   control          1
4   16   control          2
5   16   control          3
6   16   control          4
7   17  printout          1
8   17  printout          2
9   18    print2          1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文