df['unit_price'] = df.unit_price.map(lambda x: int(re.findall(r'\d+', x)[0]))
对unit_price这列删除单位变int值为什么会让四位数及其四位数以上的数字少了后三位
这个是接的上一个问题吧。
如果你的数据内只有一个逗号:"3,123",下面这么写就行
df['unit_price'] = df.unit_price.map(lambda x: int(re.findall(r'\d+,*\d*', x)[0].replace(",", "")))
如果数据比较大,存在类似"3,123,456"这类数据的可能:
df['unit_price'] = df.unit_price.map(lambda x: int(re.findall(r'(\d+(,*\d*)*)', x)[0][0].replace(",", "")))
【以下回答由 GPT 生成】
首先,根据你提供的代码,问题可能出现在正则表达式的使用上。请确保正则表达式正确提取了数字。
其次,如果正则表达式的格式正确,但是仍然导致四位数及以上的数字缺失后三位,可能是因为你使用的数据类型不适合存储这么大的整数。请尝试将数据类型更改为更适合存储大整数的类型,例如np.int64
。
以下是一个可能的解决方案:
import numpy as np
import re
# 使用正则表达式提取数字,并将数据类型更改为np.int64
df['unit_price'] = df.unit_price.map(lambda x: np.int64(re.findall(r'\d+', x)[0]))
如果上述的解决方案仍然导致问题,可能还有其他原因导致缺失后三位。这可能需要进一步的调试和查看数据情况才能解决。