Замените в dataframe '%', а затем преобразуйте все строки в плавающее - PullRequest
0 голосов
/ 28 августа 2018

У меня есть данные в * .csv с этими заголовками:

locationA_hhs locationA_hhs_ratio locationB_hhs locationB_hhs_ratio locationC_hhs locationC_hhs_ratio locationD_hhs locationD_hhs_ratio

Вот одна строка содержимого этого файла:

16 0,52% 19 0,88% 14 0,46% 17 0,29%

Мне нужно читать только проценты в виде числа с плавающей запятой. Предполагая, что я прочитал в * .csv фрейм данных, я «пытаюсь выбрать только имена столбцов, заканчивающиеся на« ratio », заменяя«% »на« », а затем преобразовывая все эти столбцы в тип float. Но этот код не дает такого результата. Пожалуйста помоги!

df_raw.select(lambda col: col.endswith('ratio'), axis=1).replace('%','').astype(float)

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

replace(X) заменяет полное значение X, а не часть значения. Вы должны использовать опцию regex=True:

result = df_raw.loc[:, df.columns.str.endswith('_ratio')]\
               .replace('%', '', regex=True).astype(float)
0 голосов
/ 28 августа 2018

Вы можете использовать двойной знак процента %%, чтобы предотвратить его интерпретацию, чтобы вы могли напечатать фактический знак %:

Как в следующем примере:

test = "have it break."
selectiveEscape = "Print percent %% in sentence and not %s" % test
print selectiveEscape

Print percent % in sentence and not have it break.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...