在pandas dataframe python中创建子列

2024-10-01 09:17:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我想创建一个新的数据帧,用中间值和平均值生成两个子列的权重,同时用柱面来挖掘它。 示例:

^{pr2}$

对于我的示例表,我使用了随机值。我无法做到这一点。 我知道如何得到中间值和中间值,这在thisstackoverflow问题中描述。 公司名称:

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

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


Tags: 数据示例dataframedf公司平均值pd权重
1条回答
网友
1楼 · 发布于 2024-10-01 09:17:10

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

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中的select列不能有“subcolumns”。如果一列有“subcolumns”,那么所有其他列也必须有subcolumns。它被称为多重索引。在

相关问题 更多 >