gpt4 book ai didi

python - Pandas - 根据条件复制行并仅增加行中的一个值

转载 作者:行者123 更新时间:2023-12-05 04:43:42 28 4
gpt4 key购买 nike

我有一个 pandas 数据框(子集构造如下):

df1 = pd.DataFrame(data = {'Id': [12345678, 23456789, 34567890, 45678901, 56789012],
'score': [0.0123, 0.0145, 0.0345, 0.5660, 1.0000],
'target': [0, 0, 0, 1, 1]})
    Id          score    target
0 12345678 0.0123 0
1 23456789 0.0145 0
2 34567890 0.0345 0
3 45678901 0.5660 1
4 56789012 1.0000 1

如果score 差异为 0.01 或更大,我想在每一行之间添加一行。新行的分数应该是两个比较行的平均值,IDtarget 应该与第一行保持相同。期望的输出是:

    Id          score    target
0 12345678 0.0123 0
1 23456789 0.0145 0
2 23456789 0.0245 0
3 34567890 0.0345 0
4 34567890 0.30025 0
5 45678901 0.5660 1
6 45678901 0.7830 1
7 56789012 1.0000 1

我只知道如何复制/复制特定行,但不确定如何根据条件执行此操作以及是否以某种方式使用应用。

有什么想法吗?非常感谢!

最佳答案

您可以应用rolling+mean 来获取行对的平均值。

然后选择要保留分数之间初始差异的行。

最后,连接两个数据帧并重新排序。

(pd.concat([df1,
(df1.assign(score=df1['score'].rolling(2).mean().shift(-1))
.loc[df1['score'].diff(-1).abs().gt(0.01)]
)]
)
.sort_index()
.reset_index(drop=True)
)

输出:

         Id    score  target
0 12345678 0.01230 0
1 23456789 0.01450 0
2 23456789 0.02450 0
3 34567890 0.03450 0
4 34567890 0.30025 0
5 45678901 0.56600 1
6 45678901 0.78300 1
7 56789012 1.00000 1

关于python - Pandas - 根据条件复制行并仅增加行中的一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69557158/

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