我有一个这样的数据框:
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")
关于python - 根据每个组的频率添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73655672/