gpt4 book ai didi

python - 当条件与数据框中的列匹配时交换行?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:55 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

user_id  event_name   event_params
10 start /pseudo
10 subcategory /home
10 add_basket_click /click
10 add_basket_error /event
10 end /end
11 start /pseudo
11 add_basket_click /click
11 add_basket_error /event

我想为 event_name、add_basket_click 和 add_basket_error 交换行。目前 add_basket_error 出现在 add_basket_click 之后,我希望它出现在它之前。输出应该如下所示。真实数据集有 1000 万行,因此寻找 pythonic 答案。

user_id event_name  event_params
10 start /pseudo
10 subcategory /home
10 add_basket_error /event
10 add_basket_click /click
10 end /end
11 start /pseudo
11 add_basket_error /event
11 add_basket_click /click

最佳答案

这是一个潜在的解决方案,使用 boolean indexingloc:

# Boolean series of event_name containing 'add_basket_error'
s = df.event_name.str.contains('add_basket_error')

# Create 2 frames, errors and events from boolean index 's'
errors, events = (df.loc[s[s].index].copy(), df.loc[s[s].index - 1].copy())

# Swap event and error values
df.loc[s[s].index] = events.values
df.loc[s[s].index - 1] = errors.values
print(df)

[输出]

   user_id        event_name event_params
0 10 start /pseudo
1 10 subcategory /home
2 10 add_basket_error /event
3 10 add_basket_click /click
4 10 end /end
5 11 start /pseudo
6 11 add_basket_error /event
7 11 add_basket_click /click

关于python - 当条件与数据框中的列匹配时交换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55572689/

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