历史数据库编号格式

时间:2018-03-26 15:46:46

标签: python sql ms-access formatting number-formatting

目前我正在使用一个历史数据库(在MS Access中),其中包含通过声音(丹麦和瑞典之间的海峡)的船只通道。

我遇到了记录船上产品数量的问题。这通常采用以下形式:

12 1/15(整数 - 空格 - 分数)

1/4(分数)

1(整数)

我想将所有这些数字转换为浮点数/小数,以便进行一些计算。还有一些额外的挑战主要是由于缺乏统一的投入:

- 并非所有行都有值

- 有些行有值:' - ',我想跳过这些

- 当缺少数字或部分数字时,某些行包含'*',这些行也可以跳过

我的第一个问题是:有没有办法在Access SQL中直接转换它?我找不到任何东西,但也许我忽略了一些东西。

我尝试的第二个选项是导出表(称为货物),使用python转换值然后输出它并再次导入表。我有一个转换标准三种格式的功能:

from fractions import Fraction
import pandas
import numpy

def fracToString(number):
    conversionResult = float(sum(Fraction(s) for s in number.split()))
    return conversionResult

df = pandas.read_csv('cargo.csv', usecols = [0,5], header = None, names = ['id_passage', 'amount'])
df['amountDecimal'] = df['amount'].dropna().apply(fracToString)

这适用于空行,但是包含'*'或' - '的值或fractToString函数无法处理的其他字符会引发ValueError。由于这些只是超过400万的记录,因此可以省略。如果fracToString函数抛出ValueError,有没有办法告诉pandas.apply()只跳到下一行?

提前谢谢你,

亚历

0 个答案:

没有答案
相关问题