gpt4 book ai didi

python - 使用分配和作为参数传递的变量根据前一行更改列的值

转载 作者:行者123 更新时间:2023-12-05 05:40:26 25 4
gpt4 key购买 nike

让它成为以下 Python Panda Dataframe:

<表类="s-表"><头>代码访问时间旗帜其他计数器<正文>0自然正确X301 天 03:00:12错误是10自然错误X300 天 05:00:00正确X21自然错误Z31自然正确X311 天 03:00:12错误是12自然正确X325 天 10:01:12正确是0

为了解决问题,只有列:code, visit_timeflag需要。

每一行的值为visit_time , 前一行的值为 NaT .知道这一点后,我想在数据框中进行下一次修改:

  • 设置非空值为visit_time的行的标志与上一行的值相同。

@Cameron Riddell 使用的代码:

out = df.assign(
flag=df['flag'].mask(df['visit_time'].notnull(), df['flag'].shift())
)

print(out)
code visit_time flag other counter
0 0 NaT True X 3
1 0 1 days 03:00:12 True Y 1
2 0 NaT False X 3
3 0 0 days 05:00:00 False X 2
4 1 NaT False Z 3
5 1 NaT True X 3
6 1 1 days 03:00:12 True Y 1
7 2 NaT True X 3
8 2 5 days 10:01:12 True Y 0

问题是我想在函数中重用代码,所以 flag列将存储在一个变量中,比如 name .如果我使用以下代码,一个新列 name在 DataFrame 中创建。

name = 'flag'
out = df.assign(
name=df[name].mask(df['visit_time'].notnull(), df[name].shift())
)

我怎样才能获得相同的功能,但能够修改通过参数传递的列的值?

最佳答案

您可以使用 ** 将字典解压为关键字参数:

name = 'flag'
out = df.assign(**{name: df[name].mask(df['visit_time'].notnull(), df[name].shift())})

关于python - 使用分配和作为参数传递的变量根据前一行更改列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72431333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com