gpt4 book ai didi

python - 在 pandas dataframe python 中创建子列

转载 作者:行者123 更新时间:2023-12-01 08:27:14 25 4
gpt4 key购买 nike

我有一个包含多列的数据框

df = pd.DataFrame({"cylinders":[2,2,1,1],
"horsepower":[120,100,89,70],
"weight":[5400,6200,7200,1200]})


cylinders horsepower weight
0 2 120 5400
1 2 100 6200
2 1 80 7200
3 1 70 1200

我想创建一个新的数据框,并用中位数和平均值制作两个权重子列,同时按圆柱体进行分组。示例:

                        weight
cylinders horsepower median mean
0 1 100 5299 5000
1 1 120 5100 5200
2 2 70 7200 6500
3 2 80 1200 1000

对于我的示例表,我使用了随机值。我无法做到这一点。 我知道如何获得中位数和平均值,其描述见 this堆栈溢出问题。:

df.weight.median()
df.weight.mean()
df.groupby('cylinders') #groupby cylinders

但是如何创建这个子列呢?

最佳答案

以下代码片段添加了两个请求的列。它按圆柱体对行进行分组,计算重量的平均值和中位数,并将原始数据帧和结果结合起来:

result = df.join(df.groupby('cylinders')['weight']\
.agg(['mean', 'median']))\
.sort_values(['cylinders', 'mean']).ffill()
# cylinders horsepower weight mean median
#2 1 80 7200 5800.0 5800.0
#3 1 70 1200 5800.0 5800.0
#1 2 100 6200 4200.0 4200.0
#0 2 120 5400 4200.0 4200.0

pandas 中的选择列不能有“子列”。如果某一列具有“子列”,则所有其他列也必须具有“子列”。这称为多重索引。

关于python - 在 pandas dataframe python 中创建子列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54163725/

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