【发布时间】:2021-02-13 20:17:36
【问题描述】:
我希望你能帮助我解决这个问题。我有一列将数值作为字符串。由于它们是来自不同国家的数据,其中一些具有不同的格式,例如“,”和“$”。我正在尝试将系列转换为数字,但我遇到了“,”和“$”值的问题。
data={"valores":[1,1,3,"4","5.00","1,000","$5,700"]}
df=pd.DataFrame(data)
df
valores
0 1
1 1
2 3
3 4
4 5.00
5 1,000
6 $5,700
我尝试了以下方法:
df["valores"].replace(",","")
但它不会改变任何事情,因为“,”值在字符串中,而不是字符串值本身
pd.to_numeric(df["valores"])
但我收到“ValueError: Unable to parse string "1,000" at position 5" 错误。
valores=[i.replace(",","") for i in df["valores"].values]
但我收到“AttributeError: 'int' object has no attribute 'replace' 错误。
所以,最后,我尝试了这个:
valores=[i.replace(",","") for i in df["valores"].values if type(i)==str]
valores
['4', '5.00', '1000', '$5700']
但它跳过了前三个值,因为它们不是字符串..
我认为使用正则表达式代码我可以管理它,但我只是不明白如何使用它。
我希望你能帮助我,因为我已经为此苦苦挣扎了大约 7 个小时。
【问题讨论】:
标签: python regex pandas string integer