【发布时间】:2022-01-30 15:01:15
【问题描述】:
我有一个 Excel 电子表格(从 SAP 中提取),其中包含数据(文本、数字)。我将这些数据转换为 DataFrame,进行一些计算,最后将其保存到 sqlite 数据库中。 而 excel 电子表格有一个逗号作为小数分隔符。 sqlite 数据库包含带有点作为小数分隔符的数字。
从代码中提取:
df_mce3 = pd.read_excel('rawdata/filename.xlsx', header=0, converters={'supplier': str, 'month': str}, decimal=',')
(decimal=',' 是建议的解决方案,仅在您使用 csv 时有效)
完成计算后,我使用以下代码将结果保存到 sqlite 数据库:
conn = sqlite.connect("database.db")
df_mce3.to_sql("rawdata", conn, if_exists="replace")
df_ka_ext.to_sql("costanalysis_external", conn, if_exists="replace")
[...]
输入:
month ordqty ordprice ordervolume invoiceqty invoiceprice
08.2017 10,000 14,90 149,00 10,000 14,90
输出:
month ordqty ordprice ordervolume invoiceqty invoiceprice
08.2017 10.000 14.90 149.00 10.000 14.90
我确实需要这些数字与输入数据具有相同的小数分隔符,但我找不到这样做的方法。
因此我想问你们中是否有人知道如何实现它?
我在 Mac OS X 上使用带有 pandas (0.19.1) 和 numpy (1.11.2) 的 Python 3.5。
谢谢!
【问题讨论】:
-
如果你尝试了:f_mce3[cols[1:]] = df_mc3[cols[1:]].replace('.', ',') ?
-
刚试了一下,运气不好。这些包含数字的列的数据类型是“float64”,没有.replace()。至少当我尝试在包含浮点数的单个变量上使用您的方法时,我被告知是这样的(number = 1234.45 | number.replace('.', ',') 导致错误)。
-
没问题,这应该会有所帮助:
f_mce3[cols[1:]] = df_mc3[cols[1:]].astype(str).replace('.', ',') -
它只是部分起作用。小数点分隔符未更改,但带有“NaN”的行已转换为“nan”。
标签: python excel sqlite pandas