gpt4 book ai didi

python - 删除满足列值条件的 pandas 数据帧的初始行,同时保持列中的序列值不变

转载 作者:行者123 更新时间:2023-11-28 20:58:12 26 4
gpt4 key购买 nike

dt = {'id': [120,120,120,120,121,121,121], 'day': [0, 1,2,3,0,1,2], 'value': [[0.5,3.4,2.7],[0.45,3.4,0.7],[0.25,0.4,0.7],[0.15,0.34,0.17],[0.35,3.4,2.7],[0.5,3.44,2.57],[0.5,0.34,0.37]]}

df = pd.DataFrame(data=dt)


day id value
0 0 120 [0.5, 3.4, 2.7]
1 1 120 [0.45, 3.4, 0.7]
2 2 120 [0.25, 0.4, 0.7]
3 3 120 [0.15, 0.34, 0.17]
4 0 121 [0.35, 3.4, 2.7]
5 1 121 [0.5, 3.44, 2.57]
6 2 121 [0.5, 0.34, 0.37]

我有一个 pandas 数据框。我希望序列 column "day"ma​​ximum upto 1。对于值大于 1 的 column day,我想删除它的初始行,然后将序列重置为 [0-1]

在这种情况下,column"id"=120 column "day" 有两个额外的值 2 和 3。我想删除它们的前两行在这种情况下,然后将 day 的列值替换为 (0,1)。

结果:

    day id  value
0 0 120 [0.25, 0.4, 0.7]
1 1 120 [0.15, 0.34, 0.17]
2 0 121 [0.5, 3.44, 2.57]
3 1 121 [0.5, 0.34, 0.37]

最佳答案

idquery分组时可以减去最大值

m = df.groupby('id').day.transform('max')
df.assign(day=df.day.sub(m - 1)).query('day >= 0')

day id value
2 0 120 [0.25, 0.4, 0.7]
3 1 120 [0.15, 0.34, 0.17]
5 0 121 [0.5, 3.44, 2.57]
6 1 121 [0.5, 0.34, 0.37]

关于python - 删除满足列值条件的 pandas 数据帧的初始行,同时保持列中的序列值不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51969376/

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