python - 我将如何更新orderedDict 中的每个数据框?
问题描述
我有一个三张的excel文件:
Sheet1:
name fav date
blue 5 11/20/2020
orange 5 11/20/2020
red 5 11/20/2020
工作表 2 和 3 遵循相同的格式(同样的列名)
我使用 pandas 来读取 excel 文件,它以orderedDict 的形式出现:
dict = pd.read_excel('Book1.xlsx', sheet_name= None)
输出:`
OrderedDict([('Sheet1', name fav date
0 purple 3 2020-04-29
1 tan 2 2020-04-29
2 blue 1 2020-04-29), ('Sheet2', name fav date
0 white 1 2020-04-29
1 black 2 2020-04-29
2 gray 3 2020-04-29), ('Sheet3', name fav date
0 blue 5 2020-11-20
1 orange 5 2020-11-20
2 red 5 2020-11-20)])
如果我想对所有三个具有相同列名的工作表进行任何操作,我该怎么做?
例如,如果在每个工作表中的每个名称列值的末尾添加字母“g”
前任:
Sheet1:
name fav date
blueg 5 11/20/2020
orangeg 5 11/20/2020
redg 5 11/20/2020
sheet2:
name fav date
whiteg 1 4/29/2020
blackg 2 4/29/2020
grayg 3 4/29/2020
有什么建议么?
解决方案
当您遍历字典中的项目时,使用.items()
Python 将它们作为键值对返回。在返回的字典中read_excel()
,键是工作表名称,值是数据框。要访问数据框,请将元组拆分到for
语句中,然后就地操作数据框:
dict = pd.read_excel('Book1.xlsx', sheet_name= None)
for sheet_name, df in dict.items():
df['name'] = df['name'] + 'g'
注意:使用dict
字典名称会隐藏用于创建字典的内置dict()
函数。您应该使用不同的名称。
推荐阅读
- amazon-web-services - 如何针对我的 AWS Api Gateway 对后端服务进行身份验证
- oracle - 从 oracle apex 重置数据库用户帐户密码
- php - 按字符串排序的原则区分大小写
- azure - 为 HTTPS 连接生成的 URL 在 Azure Web App 中以纯 HTTP 的形式出现
- machine-learning - 为什么我们要在 softmax 中使用温度?
- c# - 如何在 C# 类库中创建文件夹
- asp.net-web-api - 如何在 Web API 控制器中读取 ASP.NET_SessionId?
- sql - 如果一个值为空,如何不返回结果?
- python - 将 Python 脚本作为 Azure webjob 运行时导入错误
- ruby-on-rails - 排除电子邮件的身份验证(用户详细信息之一)rails