python - pandas 中的平均值和虚拟值
问题描述
我是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()
但是,我找不到如何同时计算每个区域的速度平均值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
有没有人可以帮我怎么做?
解决方案
DataFrame.set_index
首先用.创建索引Road_Section
。然后按第一列创建,并加入由withmean
创建的另一个 DataFrame :get_dummies
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
推荐阅读
- android - 文本字段中的文本偏离中心
- math - 计算相反的 X/Y 向量
- javascript - 我希望能够将项目拖动到 Qualtrics“选择、组、排名”问题的组框中的任何位置
- rust - ggez 库中的网格坐标和绘制坐标如何相互关联?
- html - 如何使用 VBA 访问 DOM 树中的内部文本
- c# - 禁用列表视图项目单击
- r - “错误:发生错误。请检查您的日志或联系应用作者进行澄清。”
- google-apps-marketplace - 您如何回复 G Suite Marketplace 上的评论?
- android - Android - 侧载应用程序会保持应用程序状态,但从 Play 商店/曲棍球应用程序重新下载不会
- excel - 如何使用自定义格式的日期选择器