Как удалить символ "$" из строки в серии pandas? - PullRequest
0 голосов
/ 07 апреля 2020

Нуждаюсь в страшной помощи. Я пытаюсь условно перебрать строки в CSV-файле Google Play Store. Я продолжаю сталкиваться с проблемой 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'``` 

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

вы можете использовать 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])
0 голосов
/ 07 апреля 2020

Вы можете применить str.replace ко всей Серии, прежде чем выполнять ее итерацию следующим образом:

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

Я предлагаю вам использовать решение @gustavz для повышения производительности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...