gpt4 book ai didi

python - 删除特定值之前的第一行 - Pandas

转载 作者:行者123 更新时间:2023-12-01 09:41:36 25 4
gpt4 key购买 nike

我正在尝试删除组的初始值之前的所有行。例如,如果我的 max_value = 250,则应删除该值之前的组的所有行。如果该组再次出现 250 或更小的结果值,则不会将其删除。

import pandas as pd
df = pd.DataFrame({
'date': ['2019-01-01','2019-02-01','2019-03-01', '2019-04-01',
'2019-01-01','2019-02-01','2019-03-01', '2019-04-01',
'2019-01-01','2019-02-01','2019-03-01', '2019-04-01'],
'Asset': ['Asset A', 'Asset A', 'Asset A', 'Asset A', 'Asset A', 'Asset A', 'Asset B', 'Asset B',
'Asset B', 'Asset B', 'Asset B', 'Asset B'],
'Monthly Value': [100, 200, 300, 400, 500, 600, 100, 200, 300, 200, 300, 200]
})

unique_list = list(df['Asset'].unique())
max_value = 250
print(df)

date Asset Monthly Value
0 2019-01-01 Asset A 100
1 2019-02-01 Asset A 200
2 2019-03-01 Asset A 300
3 2019-04-01 Asset A 400
4 2019-01-01 Asset A 500
5 2019-02-01 Asset A 600
6 2019-03-01 Asset B 100
7 2019-04-01 Asset B 200
8 2019-01-01 Asset B 300
9 2019-02-01 Asset B 200
10 2019-03-01 Asset B 300
11 2019-04-01 Asset B 200

如果阈值或 max_value 为 250,则数据帧应如下所示(下图)。请注意,第一次检测到组的值低于 250 时,所有这些行都将被删除。如果再次显示 250 或更高的值,则保留该值。任何帮助将不胜感激。

          date    Asset  Monthly Value
2 2019-03-01 Asset A 300
3 2019-04-01 Asset A 400
4 2019-01-01 Asset A 500
5 2019-02-01 Asset A 600
8 2019-01-01 Asset B 300
9 2019-02-01 Asset B 200
10 2019-03-01 Asset B 300
11 2019-04-01 Asset B 200

最佳答案

这应该可以解决问题:

df[df.groupby('Asset')['Monthly Value'].apply(lambda x: x.gt(max_value).cumsum().ne(0))]

产量:

          date    Asset  Monthly Value
2 2019-03-01 Asset A 300
3 2019-04-01 Asset A 400
4 2019-01-01 Asset A 500
5 2019-02-01 Asset A 600
8 2019-01-01 Asset B 300
9 2019-02-01 Asset B 200
10 2019-03-01 Asset B 300
11 2019-04-01 Asset B 200

此外,如果您将最大值存储在 max_value = {'Asset A': 250, 'Asset B': 250} 之类的字典中,则可以执行以下操作来获得相同的结果:

df[df.groupby('Asset')['Monthly Value'].apply(lambda x: x.gt(max_value[x.name]).cumsum().ne(0))]

关于python - 删除特定值之前的第一行 - Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59796776/

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