gpt4 book ai didi

python-3.x - groupby 并根据条件修剪一些行

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

我有一个像这样的数据框:

df = pd.DataFrame({"ID":[1,1,2,2,2,3,3,3,3,3], 
"IF_car":[1,0,0,1,0,0,0,1,0,1],
"IF_car_history":[0,0,0,1,0,0,0,1,0,1],
"observation":[0,0,0,1,0,0,0,2,0,3]})

我想要输出,我可以在 groupby 中使用 ID 和条件在“IF_car_history” == 1 中修剪行
tried_df =  df.groupby(['ID']).apply(lambda x: x.loc[:(x['IF_car_history'] == '1').idxmax(),:]).reset_index(drop = True)

我想在得到 ['IF_car_history'] == '1' 后删除 groupby 中的行

预期输出:

expected output

谢谢

最佳答案

首先比较掩码的值 m来自 Series.eq 然后使用 GroupBy.cumsum , 以及 1 之前的值比较 0 , 最后过滤器 boolean indexing ,但因为 id 必须在最后一个 1 之后删除通过用 [::-1] 切片来使用交换值.

m = df['IF_car_history'].eq(1).iloc[::-1]
df1 = df[m.groupby(df['ID']).cumsum().ne(0).iloc[::-1]]
print (df1)
ID IF_car IF_car_history observation
2 2 0 0 0
3 2 1 1 1
5 3 0 0 0
6 3 0 0 0
7 3 1 1 2
8 3 0 0 0
9 3 1 1 3

关于python-3.x - groupby 并根据条件修剪一些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61678740/

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