Преобразуйте строковый (объектный) столбец данных в числовой формат, применив некоторое форматирование строки - PullRequest
1 голос
/ 13 апреля 2019

Примите pandas dataframe как

index           A    
    0       1qwe 3asd
    1       6qwe 35asd
    2       11qwe 13asd
    3       17qwe 8asd
    4       5qwe 9asd
    5       7qwe 2asd
    6       1qwe 20asd

A.dtype = object

Преобразовать этот dataframe следующим образом

index        A    
    0       1.03
    1       6.35
    2       11.13
    3       17.08
    4       5.09
    5       7.02
    6       1.20

A.dtype = float64

Возможно ли преобразование в python?Если да, пожалуйста, дайте код эффективным способом.

После точки (.) Должно быть заполнение нулями, если присутствует только одна цифра

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Вы можете сделать это одним вызовом str.replace,

df['A'].str.replace(r'(\d+).*?(\d+).*', lambda x: '{}.{:0>2}'.format(x[1], x[2]))

pd.to_numeric(df['A'].str.replace(
  r'(\d+).*?(\d+).*', lambda x: '{}.{:0>2}'.format(x[1], x[2])), errors='coerce')

1 голос
/ 13 апреля 2019

Попробуйте с Series.str.findall, apply.join и pandas.to_numeric:

df['A'] = pd.to_numeric(df.A.str.findall('(\d+)').apply('.'.join))

0     1.30
1     6.35
2    11.13
3    17.80
4     5.90
5     7.20
6     1.20
Name: A, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...