gpt4 book ai didi

python - 如何使用 groupby 在两个 bin 中剪切一列并聚合每个 bin 的数据?

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:14 25 4
gpt4 key购买 nike

所以,这是我的数据框。

session_id  question_difficulty     attempt_updated_at
5c822af21c1fba22 2 1557470128000
5c822af21c1fba22 3 1557469685000
5c822af21c1fba22 4 1557470079000
5c822af21c1fba22 5 1557472999000
5c822af21c1fba22 3 1557474145000
5c822af21c1fba22 3 1557474441000
5c822af21c1fba22 4 1557474299000
5c822af21c1fba22 4 1557474738000
5c822af21c1fba22 3 1557475430000
5c822af21c1fba22 4 1557476960000
5c822af21c1fba22 5 1557477458000
5c822af21c1fba22 2 1557478118000
5c822af21c1fba22 5 1557482556000
5c822af21c1fba22 4 1557482809000
5c822af21c1fba22 5 1557482886000
5c822af21c1fba22 5 1557484232000

我想将字段“attempt_updated_at”(这是纪元时间)分成 2 个相等的 bin,并在每个 session 的 bin 中找到“question_difficulty”的平均值。

我想分别存储第一个 bin 和第二个 bin 的平均值。

我尝试通过 pd.cut,但我不知道如何使用它。

我希望我的输出是这样的,

例如,

session_id         mean1_difficulty       mean2_difficulty
5c822af21c1fba22 5.0 3.0

任何想法表示赞赏,谢谢。

最佳答案

我相信你需要qcut聚合 mean:

df1 = (df.groupby(['session_id', pd.qcut(df['attempt_updated_at'], 2, labels=False)])
['question_difficulty'].mean()
.unstack()
.rename(columns=lambda x: f'mean{x+1}_difficulty'))
print (df1)
attempt_updated_at mean1_difficulty mean2_difficulty
session_id
5c822af21c1fba22 3.5 4.125

cut :

df1 = (df.groupby(['session_id', pd.cut(df['attempt_updated_at'], 2, labels=False)])
['question_difficulty'].mean()
.unstack()
.rename(columns=lambda x: f'mean{x+1}_difficulty'))
print (df1)
attempt_updated_at mean1_difficulty mean2_difficulty
session_id
5c822af21c1fba22 3.444444 4.285714

函数之间的区别更好解释here .

关于python - 如何使用 groupby 在两个 bin 中剪切一列并聚合每个 bin 的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56947580/

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