gpt4 book ai didi

python - 如何在 Pandas 中添加 "order within group"列?

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:20 28 4
gpt4 key购买 nike

采用以下数据框:

import pandas as pd
df = pd.DataFrame({'group_name': ['A','A','A','B','B','B'],
'timestamp': [4,6,1000,5,8,100],
'condition': [True,True,False,True,False,True]})

我想添加两列:

  1. 该行在其组内的顺序
  2. 每组内条件列的滚动总和

我知道我可以通过自定义应用来做到这一点,但我想知道是否有人有任何有趣的想法? (当有很多组时,这也很慢。)这是一种解决方案:

def range_within_group(input_df):
df_to_return = input_df.copy()
df_to_return = df_to_return.sort('timestamp')
df_to_return['order_within_group'] = range(len(df_to_return))
df_to_return['rolling_sum_of_condition'] = df_to_return.condition.cumsum()
return df_to_return

df.groupby('group_name').apply(range_within_group).reset_index(drop=True)

最佳答案

GroupBy.cumcount做:

Number each item in each group from 0 to the length of that group - 1.

很简单:

>>> gr = df.sort('timestamp').groupby('group_name')
>>> df['order_within_group'] = gr.cumcount()
>>> df['rolling_sum_of_condition'] = gr['condition'].cumsum()

关于python - 如何在 Pandas 中添加 "order within group"列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30744308/

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