保存后使用旧数据的Pandas.read_excel

时间:2017-10-12 17:20:08

标签: python pandas

我有一个冗长的python代码,使用pandas与excel连接。我的代码打开文件,运行一些更新表中的表的VBA,保存文件,然后将该表读取到python中的数据帧。一切都运行顺利,但数据框包含文件打开时的数据,而不是执行更改和保存后的数据。这显然是个问题,我在第二台计算机上复制了它。它们都运行Windows 10,Office 2013,Python 3.5.2和Pandas 0.18.1。关于如何强制Pandas在打开(保存)文件中使用当前数据的任何想法?提前谢谢!

这是我运行的一个简单的测试,它复制了问题:

  1. 在一个新的Excel文件中(在整个测试期间保持打开状态),在Sheet1上,我从A1开始向下列出数字1到26,大写字母A到Z,小写m除外, B1向下。
  2. 我将此文件保存为“Test.xlsx”到外部驱动器“I:”。
  3. 我写了一个简单的python代码:

    import pandas as pd
    
    fpth = r'I:\Test.xlsx'
    df =  pd.read_excel(fpth,"Sheet1")
    print(df)
    

    返回:

         1  A
    0    2  B
    1    3  C
    2    4  D
    3    5  E
    4    6  F
    5    7  G
    6    8  H
    7    9  I
    8   10  J
    9   11  K
    10  12  L
    11  13  m
    12  14  N
    13  15  O
    14  16  P
    15  17  Q
    16  18  R
    17  19  S
    18  20  T
    19  21  U
    20  22  V
    21  23  W
    22  24  X
    23  25  Y
    24  26  Z
    
  4. 手动将小写m改为大写。

  5. 保存工作簿。
  6. 再次运行python代码。
  7. 它返回旧的数据帧,小写m,而不是我更新和保存的版本。

1 个答案:

答案 0 :(得分:0)

这个简单的解决方法对我很有帮助。有时候我在大文件上也有同样的问题-这是不一致的。 (Windows 10,office365,在本地C磁盘上定期更新)。

  1. 在Excel中保存文件后,使用Windows File Explorer将文件复制到另一个名称,例如“ Test-Copy.xlsx”
  2. 在python中,打开副本
import subprocess

cmd = "/bin/sleep 600"

subprocess.Popen(cmd, shell=True,
                 stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

print(5)

这不是一个很好的解决方案,但是您的问题和5年前的类似问题都没有得到解答,因此希望对您有所帮助。