gpt4 book ai didi

python - 根据每个组的频率添加一列

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

我有一个这样的数据框:

        vehicle_id   trip
0 0 0
1 0 0
2 0 0
3 0 1
4 0 1
5 1 0
6 1 0
7 1 1
8 1 1
9 1 1
10 1 1
11 1 1
12 1 2
13 2 0
14 2 1
15 2 2

我想添加一个列来计算每个“车辆 ID”组的每个行程值的频率,并删除频率等于“一”的行。所以在添加列之后频率将是这样的:

        vehicle_id   trip  frequency
0 0 0 3
1 0 0 3
2 0 0 3
3 0 1 2
4 0 1 2
5 1 0 2
6 1 0 2
7 1 1 5
8 1 1 5
9 1 1 5
10 1 1 5
11 1 1 5
12 1 2 1
13 2 0 1
14 2 1 1
15 2 2 1

最后的结果是这样的

        vehicle_id   trip  frequency
0 0 0 3
1 0 0 3
2 0 0 3
3 0 1 2
4 0 1 2
5 1 0 2
6 1 0 2
7 1 1 5
8 1 1 5
9 1 1 5
10 1 1 5
11 1 1 5

最好的解决方案是什么?另外,如果我打算直接删除每组中频率等于1的行(不添加频率列),该怎么办?

最佳答案

在此处检查协作: https://colab.research.google.com/drive/1AuBTuW7vWj1FbJzhPuE-QoLncoF5W_7W?usp=sharing

你可以使用 df.groupby() :

df["frequency"] = df.groupby(["vehicle_id","trip"]).transform("count")

但是当然你需要在之前创建频率列:

df["frequency"] = 0

如果我以您的数据框为例,这会给出:

import pandas as pd


dict = {"vehicle_id" : [0,0,0,0,0,1,1,1,1,1,1,1],
"trip" : [0,0,0,1,1,0,0,1,1,1,1,1]}

df = pd.DataFrame.from_dict(dict)

df["frequency"] = 0

df["frequency"] = df.groupby(["vehicle_id","trip"]).transform("count")

output :

关于python - 根据每个组的频率添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73655672/

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