【发布时间】:2019-01-20 05:15:10
【问题描述】:
我最近开始使用 Pandas 库来验证和操作 .CSV 文件和 Excel 文件。 有一个问题我刚刚提到。当为 numpy 系列(Pandas DataFrame 的列)分配值并且我要分配的值以“=”开头时,Pandas 似乎将这些值解释为公式。
来源(.CSV 文件):
ID | Name | Size
--------------------------
0 | Foo | =500.000 cells
1 | Bar | Baz
结果(Excel 文件):
ID | Name | Size
----------------
0 | Foo | 0 <- wrong value
1 | Bar | Baz
当我打开生成的 Excel 文件时,会显示一条错误消息。不幸的是,错误消息是德语的,所以我会尽量翻译它:“我们检测到 'FILENAME.xlsx' 的某些内容存在问题。您要恢复内容吗?如果您信任这个工作簿,然后按‘是’。” 按“是”时,工作簿正在打开,所有应该为“=某事”的值都是“0”。其他所有值均已正确分配!
这是用于分配值的代码行。
ws.ix[some_row_index, some_col_index] = edit_set.ix[some_other_row_index, some_other_col_index].values
有没有办法绕过这个?可能是通过其他方法来分配参数或通过设置参数?
编辑: 即使我不更改/设置值,似乎也会出现问题。 因此,如果我用 Pandas 打开的 Excel 文件的初始值以 '=' 开头并且我根本不覆盖/更改该值,则在将 DataFrame 写入 to_excel 时仍然会发生错误。 我还没有找到一种方法来告诉 Pandas 在写入 Excel 文件时“忽略公式”。
所以我认为我的代码的变化应该发生在以下两行:
writer = pd.ExcelWriter(path + name, engine='xlsxwriter', options={'strings_to_urls': False})
edit_final_file.to_excel(writer, sheet_name = 'Main', index=False, encoding='utf-8')
【问题讨论】:
-
不确定这是否是一个答案,但在 excel 中以
=开始单元格数据的方法是在前面加上'以使内容文字化。这就是单元格包含'=500 ...而不是=500 ... -
对我来说,pandas 无法解析字符串“=something”中的整数。试试
int("4")和int("=4")看看我的意思。因此,您的解决方案可能是找到以=为前缀的单元格并删除=。 -
感谢您的 cmets,但不幸的是,我无法进一步实现我的目标。我将在最初的问题中编辑一些内容,因为我刚刚注意到一些关于我的问题
标签: python python-2.7 pandas numpy