python - 将单元格范围转换为 Python 字典
问题描述
我在 excel 中有一个 5 列的表,其中我希望最左列(“A”或 0)中的每一行作为键,而该行上的 4 个后续列作为值。
到目前为止,我有:
call_data = CallData.to_dict()
call_data.index('A').to_dict(orient='index')
print(call_data)
这使每个列标题成为键和低于 (28) 值的所有行。有什么办法可以改变这个?我已经用谷歌搜索了我的心。
这是 28 行表格的样子。A列是我想成为关键的那一个。
A | B |C |D |E
Jan-15| 800 |6.47 |530,000 |1.6
编辑 3:
现在运行代码时出现此(新)错误:
Traceback (most recent call last):
File "D:/Personal Files/Technical Development/PycharmProjects/Call Center Headcount Model/Call Center Headcount Model.py", line 52, in <module>
dict_result = call_data.set_index('A').to_dict(orient='index')
File "C:\anaconda3\envs\Enviroment\lib\site-packages\pandas\core\frame.py", line 4303, in set_index
raise KeyError(f"None of {missing} are in the columns")
KeyError: "None of ['A'] are in the columns"
代码:
SpreadSheetData = pd.read_excel(
FilePath + 'Call Center Work Rules.xlsx',
sheet_name='Data Agg.')
call_data = SpreadSheetData
dict_result = call_data.set_index('A').to_dict(orient='index')
这是 Fram 打印到精确的数据: Print(SpreadSheetData)
Date Calls AVG Call Time Total Call Time Orders
0 2015-01-31 82034.0 6.471024 530843.967784 1.633581e+06
1 2015-02-28 78007.5 6.743146 526015.928294 6.534326e+05
2 2015-03-31 84425.5 6.608714 557943.983912 9.801489e+05
3 2015-04-30 71089.0 6.959075 494713.692979 8.478081e+05
4 2015-05-31 77414.0 6.732396 521181.717775 1.186931e+06
5 2015-06-30 86811.0 6.999769 607656.979210 1.356493e+06
6 2015-07-31 81995.0 7.051137 578157.977305 1.861042e+06
7 2015-08-31 62538.0 7.995746 500037.935402 1.116625e+06
8 2015-09-30 45677.5 7.885182 360175.378283 7.444169e+05
9 2015-10-31 52542.0 8.083627 424729.950838 1.000827e+06
10 2015-11-30 51352.0 7.608637 390718.717376 1.751447e+06
11 2015-12-31 58871.0 7.675463 451862.183771 2.251861e+06
12 2016-01-31 68664.0 7.745629 531845.879620 1.712810e+06
13 2016-02-29 74043.5 7.937032 587685.592567 6.851241e+05
14 2016-03-31 77155.0 8.221454 634326.306777 1.027686e+06
15 2016-04-30 60979.5 8.059682 491475.397091 8.889268e+05
16 2016-05-31 69163.0 7.885619 545393.085653 1.244498e+06
17 2016-06-30 90276.0 8.508960 768154.893931 1.422283e+06
18 2016-07-31 90854.5 8.506498 772853.621003 1.951303e+06
19 2016-08-31 72722.5 7.479822 543951.323850 1.170782e+06
20 2016-09-30 54339.0 7.215742 392096.181983 7.805211e+05
21 2016-10-31 68084.0 7.705519 524622.580078 1.049367e+06
22 2016-11-30 58564.0 7.066731 413856.014456 1.836393e+06
23 2016-12-31 63573.0 7.420257 471727.986085 2.361076e+06
24 2017-01-31 71665.5 7.527221 539442.083982 1.796311e+06
25 2017-02-28 62583.5 7.295476 456576.395666 7.185243e+05
26 2017-03-31 76385.5 7.317654 558962.634577 1.077786e+06
27 2017-04-30 69727.5 7.330732 511153.636251 9.322625e+05
28 2017-05-31 81249.5 7.247624 588865.803177 1.305168e+06
解决方案
尝试这个:
dict_result = call_data.set_index('A').to_dict(orient='index')
例子:
call_data = pd.DataFrame([
[2,2,3,4,5],
[1,2,3,4,5],
[6,2,3,4,5],
[7,2,3,4,5]
], columns=['A', 'B', 'C', 'D', 'E'])
dict_result = call_data.set_index('A').to_dict(orient='index')
for k, v in dict_result.items():
print(k, v)
2 {'B': 2, 'C': 3, 'D': 4, 'E': 5}
1 {'B': 2, 'C': 3, 'D': 4, 'E': 5}
6 {'B': 2, 'C': 3, 'D': 4, 'E': 5}
7 {'B': 2, 'C': 3, 'D': 4, 'E': 5}
如果您想寻找另一种格式,您可以通过以下方式查看更多选项:
print(help(call_data.to_dict))
在哪里可以看到更多细节:
Parameters
----------
orient : str {'dict', 'list', 'series', 'split', 'records', 'index'}
Determines the type of the values of the dictionary.
- 'dict' (default) : dict like {column -> {index -> value}}
- 'list' : dict like {column -> [values]}
- 'series' : dict like {column -> Series(values)}
- 'split' : dict like
{'index' -> [index], 'columns' -> [columns], 'data' -> [values]}
- 'records' : list like
[{column -> value}, ... , {column -> value}]
- 'index' : dict like {index -> {column -> value}}
推荐阅读
- c# - Devops 构建管道 - 错误 MSB3073:命令 XCOPY
- node.js - 如何在 JEST 中模拟一个承诺和绑定的函数?
- r - 使用 rtweet 时如何选择下载时间段?
- ruby - 我应该将 ruby 单行 if 语句拆分为多行 if 语句,因为该行很长吗?
- java - 标记未显示在地图片段上
- javascript - PDF中的CSS未在服务器上加载
- r - 使用 Heroku Docker R Buildpack 在 Heroku 上的可扩展性 Shiny App
- java - 使用 @JsonRawValue 注释进行 Json 序列化导致异常
- angular - 基于角度角色的菜单和页面路由
- ios - 在 MetalView 上渲染会冻结 iPhone 8