gpt4 book ai didi

python - 在Python中选择满足特定条件的行之间的行

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

我有一个大的 pandas 数据框,我想选择入口点 (action1 == 0) 和导出点 (action1 == 1) 之间发生的所有用户操作。数据库中有多个这样的用户 session 。它看起来像这样:

User_action   Reference   Other_data  Row_index
action2 0 foo a
action1 0 bar b
action6 0 foo c
action4 0 foo d
action1 1 bar e
action7 0 foo f
action1 0 foo g
action3 0 bar h
action1 1 foo i
action1 1 foo j
action3 0 bar k
action1 0 foo l
action9 0 foo m
action1 1 foo n

结果应生成具有索引的行:c、d、h 和 m:

User_action   Reference   Other_data  Row_index
action6 0 foo c
action4 0 foo d
action3 0 bar h
action9 0 foo m

最佳答案

用途:

#filter only category
df1 = df[df['User_action'] == 'action1'].copy()

#test only pairs 0, 1 and reindex for same length as original df
m1 = df1['Reference'].eq(1) & df1['Reference'].shift(1).eq(0)
m1 = m1.reindex(df.index, fill_value=False)
m2 = df1['Reference'].eq(0) & df1['Reference'].shift(-1).eq(1)
m2 = m2.reindex(df.index, fill_value=False).shift().fillna(False)

a = np.select([m1, m2], [-1,1], default=0)
m = a.cumsum() == 1
#filter by final condition
df = df[m]

print (df)
User_action Reference Other_data Row_index
4 action6 0 foo c
5 action4 0 foo d
9 action3 0 bar h
14 action9 0 foo m

关于python - 在Python中选择满足特定条件的行之间的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47284469/

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