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()
但是,我找不到如何同时计算每个区域的平均速度,并将RoadType
和Landuse
列更改为虚拟值的方法。 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
有没有人可以帮助我该怎么做?
答案 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