在一个数据框中,在特定的列中,我具有19M,2.8M之类的大小值。 M表示百万,以此类推,还有其他可能性(m, K.
)。
我正在尝试使用正则表达式将它们转换为数字,但是该函数转换的是数字,例如19000000.0。我必须消除所有的.0
。
代码在这里:
conversion = re.compile('(?P<amount>\d+\.{0,1}\d*)(?P<unit>\w{0,1})')
def unita(unit):
if unit == 'M':
return 1000000
if unit == 'k':
return 1000
return 1
def to_numeric(elem):
m = conversion.search(elem)
if m is None:
return None
unit = m.group('unit')
mult = unita(unit)
amount = float(m.group('amount'))
return int(amount * mult)
答案 0 :(得分:1)
对于要转换为整数的数据框中的列,请使用
df['column'] = df['column'].astype(int)