我有一个大型电子表格文件(.xlsx),我正在使用python pandas进行处理.碰巧我需要来自该大文件中两个选项卡的数据.其中一个标签有大量数据,另一个标签只有几个方格.
当我在任何工作表上使用pd.read_excel()时,它看起来像是加载了整个文件(而不仅仅是我感兴趣的工作表).因此,当我使用该方法两次(每张一次)时,我实际上必须让整个工作簿被读取两次(即使我们只使用指定的工作表).
我使用它错了还是仅限于这种方式?
谢谢!
许多电子表格都有公式和格式,用于读取和写入Excel文件的Python工具无法忠实再现.这意味着我想以编程方式创建的任何文件必须是我从头开始创建的东西,然后其他Excel文件(具有上述复杂性)必须引用该文件(这会产生各种其他依赖性问题).
我对Excel文件'tabs'的理解是它们实际上只是XML文件的集合.那么,是否可以使用pandas(或其中一个底层读/写引擎,如xlsxwriter或openpyxl来修改其中一个选项卡,其他选项卡(其中有更多邪恶的东西)完好无损?
编辑:我将尝试通过一个例子进一步阐述问题.
我可以这样做,如果是这样,怎么样?
我有两个不同长度的系列,我想得到两个系列中指数和数量都相同的指数.
这是系列:
ipdb> s1
s1
000007720 2000.00
group1 -3732.05
group t3 2432.12
group2 -38147.87
FSHLAJ -36711.09
EWkayuwo -3.22
Name: amount, dtype: float64
ipdb> s2
s2
000007720 2000.00
group1 -3732.05
group z 12390.00
group y 68633.43
group x 25.00
group w 3913.00
group v -12750.50
group u -53.49
group t -7500.00
group s -1575.82
group r -10.00
group q 1800.00
group p -4510.34
EWFhjkaQU 455.96
group2 -38147.87
FSHLAJ -36711.09
GEKWJ 5.54
Name: amount, dtype: float64 …Run Code Online (Sandbox Code Playgroud) 我希望以下记录(当前显示为3.200000e + 18但实际上(希望)每个都是一个不同的长整数),使用pd.read_excel()创建,以便进行不同的解释:
ipdb> self.after['class_parent_ref']
class_id
3200000000000515954 3.200000e+18
3200000000000515951 NaN
3200000000000515952 NaN
3200000000000515953 NaN
3200000000000515955 3.200000e+18
3200000000000515956 3.200000e+18
Name: class_parent_ref, dtype: float64
Run Code Online (Sandbox Code Playgroud)
目前,它们似乎"出来"是科学标记的字符串:
ipdb> self.after['class_parent_ref'].iloc[0]
3.2000000000005161e+18
Run Code Online (Sandbox Code Playgroud)
更糟糕的是,我不清楚我的.xlsx文件中是否已正确读取该数字:
ipdb> self.after['class_parent_ref'].iloc[0] -3.2e+18
516096.0
Run Code Online (Sandbox Code Playgroud)
Excel中的数字(数据源)为3200000000000515952.
这不是显示器,我知道我可以在这里更改.这是关于保持基础数据在同一个形式,它是在阅读时(这样,如果/当我把它写回Excel,它会看起来是一样的,因此,如果我使用这些数据,它会看起来像它那样在Excel而不是Xe + Y).如果我可以指望它是正确数字的字符串表示,我肯定会接受一个字符串.
您可能会注意到我想看到的数字实际上(顺便提一下)其中一个标签.Pandas正确读取字符串中的那些(可能是因为Excel将它们视为字符串?)与我输入的这个数字不同.(实际上,即使我在重做读取之前输入="3200000000000515952"进入相关单元格,我也得到了与上述相同的结果.)
如何从数据帧中获取3200000000000515952?我想知道大熊猫是否有长整数的限制,但我唯一发现的是1)有点过时了,2)看起来不像我面对的那样.
谢谢!
这个问题涉及Intuit的QBO v3 API.
我有一个用户ID可以访问多家公司.关联公司等.当我尝试连接到我查询的第一个公司以外的公司时,我收到了身份验证错误.这是因为每个OAuth连接只能与一家公司交谈吗?
我不记得在访问令牌获取过程中指定公司,所以我对此感到困惑.我认为这篇文章可能会有回应,但它并没有完全解决我的问题.
我有一个类,其对象包含pandas数据帧(self.before和self.after under)和save()方法,该方法使用xlsxwriter导出数据(有两个工作表,"before"和"after").我正在尝试冻结窗格(后来也想使用条件格式).
即使我知道您无法更改已经编写的单元格样式,但这两个操作将在工作表级别应用,因此应在以后设置.
这是代码:
def save():
writer = pd.ExcelWriter(self.path, engine='xlsxwriter')
self.before.to_excel(writer, "before")
self.after.to_excel(writer, "after")
for sht_name in writer.sheets:
ws = writer.sheets[sht_name]
ws.freeze_panes=(2,0)
writer.save()
Run Code Online (Sandbox Code Playgroud)
保存的工作表的窗格不会被冻结.我在使用xlsxwriter(没有pandas)时成功使用了这个方法,并且我正在遵循这个pandas-charts文档的主要设置,它似乎只是从writer对象中检索底层的xlsxwriter对象并对它们进行操作.
你有没有想过为什么我没有在这里得到这个结果的想法.
如果由于某种原因无法做到这一点,我总是可以从数据框中检索表的各个值,当然,这看起来似乎过分了.
我收到了警告:
/.../local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
InsecureRequestWarning)
Run Code Online (Sandbox Code Playgroud)
我在读文件.
如果我知道自己在做什么,就像这个一样,我会看到很多关于如何禁用它的帖子.
但我仍然无法弄清楚错误的含义.我认为这意味着我错过了证书(因为它只发生在我的VPS上,而不是我的Mac上运行相同版本的脚本),但我不明白为什么我需要证书才能发出安全请求到第三方API.
非常感谢一个有用的摘要(或只是正确方向上的一点),所以我可以决定是否禁用它.我的直觉是我不应该禁用它,所以我想弄清楚如何正确解决问题.
将项目迁移到Python 3(2to3-3.7 -w -f print *)时,我观察到很多(但不是全部)print语句变成了print((...)),因此这些语句现在打印出元组而不是执行预期的行为。我收集到,如果我使用过的话,那么我-p现在会处于一个更好的位置,因为from __future__ import print_function它位于每个受影响的模块的顶部。
我正在考虑尝试使用sed修复此问题,但是在此之前,我想知道是否还有其他人对此进行过处理。是否有2to3功能可以清除此问题?
我确实使用版本控制(git),并且前后都有提交(以及2to3创建的.bak文件),但是我不确定如何将自己所做的更改与打印情况区分开。
我正在使用优秀的xlsxwriter来使用Python构建电子表格.我已经意识到这样一个问题:在开始收到警告并且功能被门控之前,你只能在表单上写入40k左右的URL.
有没有办法将URL写为字符串,以便Excel应用程序不会将url解释为打开时的字符串(因此允许我添加无限制的URL)?我知道这些网址不会被点击,但在这种情况下,对我来说总比没有好.
我有兴趣比较存储在 Dropbox 中的两个版本的小型 Excel 文件作为单独的版本。
使用 Python SDK,特别是files_download() 方法,我得到一个 requests.models.Response 对象,但我无法让pandas.read_excel()使用它。
这是代码片段:
with open(resp.content, "rb") as handle:
df = pandas.read_excel(handle.read())
Run Code Online (Sandbox Code Playgroud)
错误:
TypeError('file() argument 1 must be encoded string without null bytes, not str',)
Run Code Online (Sandbox Code Playgroud)
我知道我缺少一些基本的东西,可能需要将文件编码为二进制文件。(尝试过 base64.b64encode 和其他一些东西,但还没有成功。)我希望有人可以帮助我指出正确的方向,可能是 io 模块?
我正在使用 Python 2.7.15
为免生疑问,我特别希望避免首先将 Excel 文件保存到文件系统的步骤。我确信我能实现更广泛的目标这种方式,但优化我试图从Dropbox的文件直接读入大熊猫DataFrames,那read_excel()方法接受一个文件-事实上类似物体的手段,我想——我应该能够做到这一点。
基本上,我认为这总结了我目前正在经历的痛苦。我需要将 Dropbox 的响应转换为类文件对象的形式。
python ×7
pandas ×6
excel ×3
xlsxwriter ×2
dataframe ×1
dropbox-api ×1
long-integer ×1
python-2.7 ×1
python-2to3 ×1
python-3.x ×1
quickbooks ×1
sed ×1
urllib3 ×1