我有一个单位列表,我想在一个数据帧中搜索,然后将这些单位转换成正确命名的单位,并将它们的值与下面列表中的常数因子相乘。下面是示例数据帧
>> df
product info
product___A 3.5 m mini-jack
product___B 3.5 kg mini-jack
product___C 3.5mm mini-jack
product___D 3.5 millimeter mini-jack
product___E 43 centimeter mini-jack
下面是我的代码实现
import re
import pandas as pd
units_origianal = ['Kilogram', 'millimeter', 'pounds', 'ounce', 'centimeter', 'kilometers']
units = ['kg', 'mm', 'lbs' 'oz', 'cm', 'm']
factor = [0.543, 654.53, 53.64,0.744, 43.8, 98.123]
def norm_units(x):
for i in range(len(units)):
if ('\d+\s'+units_origianal[i] in x or re.search('\d+'+units_origianal[i],str(x))):
quantity = re.findall("\d+\.\d+", str(x))[0]
resulting_quantity = float(quantity) * factor[i]
return x.replace(quantity, resulting_quantity).replace(units_origianal[i], units[i])
df = df.apply(norm_units)
>> df
# Expected resulting Dataframe
product info
product___A 344.05 m mini-jack
product___B 1.9005 kg mini-jack
product___C 2290.155 mm mini-jack
product___D 2290.155 mm mini-jack
product___E 1883.4 cm mini-jack
运行代码后得到的结果数据帧
product info
0 None None
1 None None
2 None None
3 None None
4 None None
感谢您的帮助。你知道吗
您可能希望将
str.replace
与正则表达式组一起使用相关问题 更多 >
编程相关推荐