如何从熊猫系列中的字符串中去除“$”符号?

Posted

技术标签:

【中文标题】如何从熊猫系列中的字符串中去除“$”符号?【英文标题】:How do I strip the "$" symbol from a string in a pandas series? 【发布时间】:2020-07-19 10:28:27 【问题描述】:

急需帮助。我正在尝试有条件地迭代 Google Play 商店 csv 文件的行。由于某种原因,在我的某些循环中,我一直遇到 pandas 无法识别 '>=' 符号的问题。也就是说,使用条件 "if price == "9.00" 可以正常工作,但其他操作(即 '=" 返回错误消息。

此外,我正在尝试计算价格为 9.00 美元或更高的应用数量。我想从价格列中去掉“$”符号,然后继续迭代它。我尝试了 str.lstrip 函数但没有成功。非常感谢任何和所有帮助。


df = pd.read_csv("googleplaystore.csv")

df['Rating'].fillna(value = '0.0', inplace = True)

# Calculating how many apps have a price of $9.00 or greater

apps_morethan9 = 0

for i, row in df.iterrows():
    rating = float(row.Rating)
    price = float(row.Price)
    if price >= 9:
        apps_morethan9 += 1

print(apps_morethan9)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-103-66171ce7efb6> in <module>
      5 for i, row in df.iterrows():
      6     rating = float(row.Rating)
----> 7     price = float(row.Price)
      8     if price >= 9:
      9         apps_morethan9 += 1

ValueError: could not convert string to float: '$4.99'``` 

【问题讨论】:

row.Price.str.strip("$")?或str.lstrip("$") 【参考方案1】:

你可以像这样使用 string.replace():

for i, row in df.iterrows():
    rating = float(row.Rating)
    price = float(row.Price.str.replace('$',''))
    if price >= 9:
        apps_morethan9 += 1

但您的实现可以在速度和复杂性方面得到改进:

print(df[df.Price.str.replace('$','').astype(float) >= 9].count().values[0])

【讨论】:

感谢您的快速回复。真的很感激这个论坛太酷了。我尝试了使用 string.replace 建议的代码,但收到此错误消息 ``` apps_morethan = 0 for i, row in df.iterrows(): rating = row.Rating price = float(row.Price.replace('$' ,'') if price >= '9': apps_morethan += 1File "", line 7 if price >= '9': ^ SyntaxError: invalid syntax `` 非常感谢。你们是最棒的。 如果解决了您的问题,请用绿色钩子将答案标记为解决方案【参考方案2】:

您可以在整个系列上应用 str.replace,然后像这样迭代它:

df["Price"].str.replace("$", "")
for i, row in df.iterrows():
    #rest of your routine

我建议您使用@gustavz 解决方案来提高性能

【讨论】:

感谢您的帮助。非常感谢你们。

以上是关于如何从熊猫系列中的字符串中去除“$”符号?的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤熊猫系列索引中的字符串

如何根据字典替换熊猫系列中的字符串组,并将值作为列表?

在C++中,如何只保留字符串中的数字而去除字母和符号,请给出示例语句,谢谢

如何去除重音符号并将字母变成“普通”的 ASCII 字符? [复制]

java中怎么用toString方法去除字符串中的标点,符号和数字?

如何从熊猫中的字符串中提取前8个字符