python - 从多个 excel 工作表在同一索引上附加熊猫数据框
问题描述
我遇到了以下问题,这是一个简单的代码,可以计算体育数据集上的一些平均值。如果需要,我可以提供这些数据的示例。
现在尝试将生成的数据帧背靠背附加,这是我无法做到的。基本上我想获取所有数据集(这里有两个,但要使用更多),并根据输出生成时间线。所有文件都有相同的列和索引。下面是我正在使用的代码:
import pandas as pd
season_list = ["2017-2018","2018-2019"]
excl_value = 10
header_list = []
for seas in season_list:
excel_sheet = pd.read_excel(r'Data\NData' + str(seas) + '.xlsx')
excel_sheet = excel_sheet.fillna(value = 0)
headers = excel_sheet.columns.values.tolist()
if headers not in header_list:
header_list.append(headers)
for header in header_list:
data_mean = excel_sheet[header][excel_sheet.games >=
excl_value].mean()
data_mean = round(data_mean,2)
print(data_mean)
有了这个,我只需得到两个数据集,如下所示:
age 25.42
games 22.42
games_starts 18.19
age 24.95
games 27.18
games_starts 22.00
这些是针对少数变量的两种不同平均值计算的结果。现在理想情况下,我希望将这些按文件和同时按相同的索引进行分解。我会看到它的工作方式如下:
2017-2018 2018-2019
age 25.42 24.95
games 22.42 27.18
games_starts 18.19 22.00
像这样,我可以一起创建价值观的时间线。然而努力实现这一目标。我应该如何将计算运行合并为一组?谢谢!
我已经测试了一些实现这一目标的方法。一个只是简单地将 .append 附加到 excel 工作表中,但我看到一些值没有组合在一起的问题。我还考虑过只获取平均计算并将它们应用到他们自己的字典/列表/数据框,但我还没有设法将它们实际推入他们自己的集合中。
解决方案
你可以通过3个步骤很好地做到这一点。加载:
sports_data = [pd.read_excel(r'Data\NData' + str(season) + '.xlsx') for season in season_list]
现在您想添加一列来标识每个工作表,以便您可以在下一步中对其进行分组:
for i, season in enumerate(season_list):
sports_data[i]['season'] = season
合并为一个 DataFrame:
sports_data = pd.concat(sports_data)
现在我们准备按季节分组并取平均值:
sports_data.groupby('season').mean()
这会给你
age games games_starts
season
2017-2018 26.666667 33.000000 22.333333
2018-2019 25.666667 25.666667 19.000000
现在剩下的只是将其转置以获得您想要的:
sports_data.groupby('season').mean().T
推荐阅读
- android - 导航抽屉活动和空活动有什么区别
- javascript - 如何使用 JavaScript 截取 PDF 格式的屏幕截图
- javascript - 如何反应原生深层链接以打开原生相机应用程序?
- java - 线程“主”java.lang.IllegalArgumentException 中的异常:无法实例化接口 org.springframework.context.ApplicationListener
- c# - 用于勾选多个单选按钮的按钮
- c# - 如何在构建 ac# 应用程序之前设置连接字符串,以便它可以在客户端计算机上运行
- python - 用高斯拟合
- javascript - 错误后重新加载页面,redux
- javascript - 以百分比或小数位返回元素的 offsetWidth 以使覆盖 div 的宽度相同 - React / Javascript
- javascript - 事件监听器 onkeydown 问题 Javascript