【发布时间】:2019-10-23 13:15:32
【问题描述】:
我是 Python 新手,之前发布了我的问题并收到了其他人的建议,但仍然无法解决我的问题。我正在重新发布我的帖子,并进行了一些修改,并结合了其他人的建议。我不仅是 Python 新手,而且在表达我的问题时也遇到了问题。
我想将所有价格从字符串转换为数字,例如从“3K”转换为“3000”,以保持数据分析的一致性。目前,K表示千,就足够了,不需要进入数百万或数十亿。
这是在 Python 数据帧上完成的,我对迭代、列出和遇到我不理解的错误仍然不熟悉。
a) 我无法将字符串转换为浮点数。 “ValueError:无法将字符串转换为浮点数:”
b) 然后我决定转换为字符串,但我无法将它作为字符串存储在数据框中。我的输出是空单元格。
import pandas as pd
import numpy as np
import re
def regex_filter(val):
new_price = val
if val:
price = ' '
mo = re.search('\d+[kK]',val)
if mo:
price = str(price).replace('K','000')
print("The New value is ",price)
new_price = price
return new_price
else:
return new_price
else:
return new_price
if __name__ == "__main__":
df = pd.read_csv('ProductID_price.csv', encoding='utf8')
df['price'] = df['price'].apply(regex_filter)
输入
product_id product_name price
0 1 Mares XR Kevlar Diving Dry Suit 3K
1 2 Beuchat Abyss Dry Diving Dry Suit 2050
2 3 Typhoon Scuba Dive Dry Suit 1.5K
3 4 Scubapro Evertech Drysuit Men 4,059.99
输出
product_id product_name price
0 1 Mares XR Kevlar Diving Dry Suit
1 2 Beuchat Abyss Dry Diving Dry Suit 2050
2 3 Typhoon Scuba Dive Dry Suit
3 4 Scubapro Evertech Drysuit Men 4,059.99
【问题讨论】:
标签: python pandas dataframe data-science