Pandas的平均值和虚拟值

2024-10-03 00:27:46 发布

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

我是python初学者 我有一个dataframe

df
Road_Section    RoadType    Speed   Landuse
Zone1           Local       1.33    Shops
Zone1           National    0.37    Field
Zone1           Collector   0.52    Park
Zone1           National    1.17    Resident
Zone1           Local       1.21    Office
Zone2           Local       0.52    Park
Zone2           Local       1.05    Shops
Zone2           Collector   2.48    Shops

我使用此代码计算每个区域的速度:

df.groupby("Zone")['speed'].mean()

但是,我找不到如何同时计算每个区域的平均速度,并将RoadTypeLanduse列更改为伪值。1的虚拟值在区域中,0不在区域中

Zone    Average_Speed   Local   National    Collector   Shops   Office  Resident    Park    Field
Zone1   0.92            1       1           1           1       1       1           1       1                  
Zone2   1.35            1       0           1           1       0       0           1       0

有人能帮我怎么做吗


Tags: 区域parkfielddflocalspeedofficeshops
1条回答
网友
1楼 · 发布于 2024-10-03 00:27:46

首先用Road_Section创建索引^{}。然后为每个第一列创建mean,并将^{}创建的另一个数据帧与max连接起来:

df1 = df.set_index('Road_Section')
mean = df1.pop('Speed').mean(level=0).to_frame('Average_Speed')

df = mean.join(pd.get_dummies(df1, prefix='', prefix_sep='').max(level=0)).reset_index()
print (df)
  Road_Section  Average_Speed  Collector  Local  National  Field  Office  \
0        Zone1           0.92          1      1         1      1       1   
1        Zone2           1.35          1      1         0      0       0   

   Park  Resident  Shops  
0     1         1      1  
1     1         0      1  

相关问题 更多 >