熊猫的平均价值和虚拟价值

时间:2019-11-09 09:59:43

标签: python pandas

Python的Iam初学者 我有一个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

有没有人可以帮助我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先使用Road_Section创建索引DataFrame.set_index。然后在第一列中创建mean,然后将get_dummies创建的另一个DataFrame与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