Pandas Dataframe: Разделить смешанный столбец с плавающей строкой на отдельные столбцы с плавающей точкой и строкой - PullRequest
0 голосов
/ 28 августа 2018

У меня есть столбец данных Pandas с именем «VALUE», в котором есть строковые данные, например: «-1.459NS» Я хочу создать 2 новых столбца -> 'VALUE' должен иметь значение с плавающей запятой -1,459, а UNIT должен содержать строку 'NS'

Существует ли для этого способ Regex и / или Non Regex? Какой самый быстрый способ сделать это? У меня есть, может быть, миллион + строк, по которым я хочу это сделать.

>>> d = {'VALUE': ['-1.234NS','0.22MH']}
>>> df=pd.DataFrame(data=d)
>>> df
      VALUE
0  -1.234NS
1    0.22MH

Я хочу:

    VALUE    UNIT
0  -1.234    NS
1    0.22    MH

Где VALUE - число с плавающей запятой, а UNIT - строка

Ответы [ 2 ]

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

Вот еще один не-регулярный способ решить эту проблему, если следующие единицы не имеют фиксированной длины. Это разделит строку на числа с плавающей точкой и единицы типа строки.

s = '-1.234NS'
a,b = map(str, s.split("."))
a = a + '.'
unit = ''
for num in b:
    try:
        float(num)
        a += num
    except ValueError:
        unit += num
fl = float(a)
0 голосов
/ 28 августа 2018

df.column.str.extract создаст кадр данных с одним столбцом на соответствующую группу в регулярном выражении, индексированный по позиции int. Затем вы можете использовать rename для переименования столбцов.

>>> df.VALUE.str.extract(r'([-]?[\d.]*)([\w\D]*)').rename(columns={0:'VALUE', 1:'UNIT'})

    VALUE UNIT
0  -1.234   NS
1    0.22   MH
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...