做一个实训项目
"
172万元 "
"
148万元/套 "
"
151.8万元 "
"
36.88万元/套 "
"
56.66万元/套 "
"
133.8万元 "
"
227万元/套 "
"
43万元/套 "
"
175万元/套 "
"
158万元/套 "
"
59.5万元 "
"
55万元 "
"
10500元/平方米 "
"
8800元/平方米 "
"
138万元 "
"
138万元/套 "
"
149.8万元/套 "
"
170万元/套 "
"
188万元/套 "
"
105万元/套 "
"
123.2万元/套 "
"
116万元 "
"
97万元/套 "
"
65万元 "
"
368万元/套 "
"
76万元/套 "
"
152万元/套 "
"
138万元/套 "
"
98万元/套 "
"
14000元/平方米 "
"
252万元 "
"
1.3万元/套 "
"
1.5万元/套 "
"
125万元/套 "
"
148万元/套 "
"
280万元 "
"
98万元/套 "
"
105万元 "
"
160万元 "
"
180万元/套 "
"
85万元/套 "
"
145万元/套 "
"
57.8万元/套 "
"
150万元 "
"
162万元/套 "
"
62万元 "
"
158万元 "
"
98万元 "
"
105万元 "
"
94万元 "
"
160万元/套 "
"
168万元 "
"
92万元 "
"
68万元 "
"
45万元 "
"
180万元 "
"
152万元 "
"
92万元 "
"
62万元 "
"
90万元 "
"
65万元/套 "
"
50万元 "
"
193.5万元/套 "
"
62万元 "
"
70万元 "
"
78.8万元 "
"
75万元/套 "
"
172万元 "
"
10000元/平方米 "
"
127万元/套 "
"
128万元/套 "
"
116万元/套 "
"
120万元/套 "
"
123万元/套 "
"
123万元/套 "
"
115万元/套 "
"
118万元/套 "
"
123万元/套 "
"
122万元/套 "
"
122万元/套 "
"
95万元/套 "
"
97万元/套 "
就是我想把里面的单位都统一但是无法做到
最开始使用的是正则表达式解决
统一的以元为单位
可以这样写:
import pandas as pd
import re
s = ["172万元", "148万元/套","1518000元/套","36.88万元/套"]
df=pd.DataFrame({'price':s})
df['n_price'] = df['price'].apply(lambda x: str(float(re.search(
'[^\u4e00-\u9fa5\/]+', x)[0])*10000)+re.search('[\u4e00-\u9fa5\/]+', x)[0].replace('万', '').replace('/套', '') if '万' in x else x.replace('/套', ''))
print(df)
运行结果
F:\2021\qa\ot3>t1
price n_price
0 172万元 1720000.0元
1 148万元/套 1480000.0元
2 1518000元/套 1518000元
3 36.88万元/套 368800.0元
如有帮助,请点击采纳。
可以用字符串替换处理试试,将万元替换为元的单位
import re
with open(filename, encoding='utf-8') as f:
con = f.read()
res = re.findall(r'"(.*?)"', con, re.DOTALL)
if res:
res = list(map(lambda x: x.strip().replace("\n", '').replace("/套", ""), res))
result = list(map(lambda x: (str(float(x.split('万')[0]) *10000) +x.split("万")[1]) if x.find('万') > -1 else x , res))
print(result)