Ошибка преобразования строк в число с плавающей точкой в ​​Pandas - PullRequest
0 голосов
/ 23 апреля 2020

Я собрал некоторые финансовые данные с сайта и сохранил их в Pandas Датафрейме. Числа хранятся в виде строк, которые я пытался преобразовать в числа с плавающей точкой с помощью обычной команды df['Col Name'].astype(float), но столкнулся с ошибкой из-за присутствия - (da sh) на исходном веб-сайте. Сообщение об ошибке: ValueError: could not convert string to float: '-'.

. Мое намерение состоит в том, чтобы сделать вычисления, используя значения в разных столбцах, так что это является очевидным препятствием. Я также рассмотрел вопрос о замене - на 0, но с другой стороны, это может привести к другим ошибкам из-за деления на 0.

Какие могут быть варианты решения этой проблемы?

Example of the dataframe value:
|      | P/B   | P/E    | PEG  |   |
|------|-------|--------|------|---|
| AMZN | 18.89 | 102.68 | 3.17 |   |
| GOOG | 4.32  | -      | 1.62 |   |
| IBM  | -     | 11.12  | 3.35 |   |

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете сделать эти тире NaN.

df = pd.DataFrame({'inds':['AMZN', 'GOOG', 'IBM'],
                   'P/B':[18.89, 4.32, '-'], 
                   'P/E':[102.68, '-', 11.12], 
                   'PEG':[3.17, 1.62, 3.35]})
df.set_index('inds', inplace=True)
df.index.name = None
df

|      | P/B   | P/E    | PEG  |   |
|------|-------|--------|------|---|
| AMZN | 18.89 | 102.68 | 3.17 |   |
| GOOG | 4.32  | -      | 1.62 |   |
| IBM  | -     | 11.12  | 3.35 |   |

Затем вы можете заменить тире (и любой другой символ, просто поместите его в квадратные скобки) на

df = df.replace('[-]', np.nan, regex=True)

, который

df
|      | P/B   | P/E    | PEG  |   |
|------|-------|--------|------|---|
| AMZN | 18.89 | 102.68 | 3.17 |   |
| GOOG | 4.32  | NaN    | 1.62 |   |
| IBM  | NaN   | 11.12  | 3.35 |   |

, поэтому вы можете разделить вещи и значения NaN, тогда

df['P/B'] / df['P/E']
AMZN    0.18397
GOOG        NaN
IBM         NaN
dtype: float64

Помимо этого, вам просто нужно будет определить подходящую стратегию для вменения значений для анализа, который вы хочу сделать.

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