Python Разделить выходной столбец с фиксированной и динамической c длиной - PullRequest
0 голосов
/ 17 июня 2020

Я хочу разделить фрейм данных из одного столбца на три столбца Пример ввода и вывода [(Col1 = фиксированная длина), (Col2 = динамический c длина ) , (Col3 = оставшаяся часть)]

import re
import pandas as pd
text='Raw Data'
out = re.findall(r"RIY-[A-Z]{6}-\d{6}\.\d{6,8}\.\d{5,7}", text) 
df = pd.DataFrame(out, columns = ["RIY"]) 

df["col1"] = df.RIY.str[0:15]
df["col2"] = df.RIY.str[15:24]# need to split based on criteria (find next '.' less 2 char
df["col3"] = df.RIY.str[24:] # remaining all text after splitting 2 column

#Output
[1]: https://i.stack.imgur.com/Lupcd.png

Я попытался разделить с фиксированной длиной (решение от Roy2012), которая работает только идеально. Для первой части, [0:15], длина варьируется для оставшиеся два столбца. Я хочу разделить, найдя вторую точку ('.') Меньше (-2) (чтобы избежать удаления 46). Я хочу достичь (найдите вторую точку (.) -2 (чтобы избежать удаления 46), а затем разделить.

1 Ответ

0 голосов
/ 17 июня 2020

Это работает для вас?

df.RAW.str.extract(r"(.*)(\d\d\.\d+)(\d\d\.\d+)")

Результат, который я получаю:

                 0          1          2
0  RIY-OUHOMH-1002  24.534768  46.650127
1  RIY-OUHOHH-1017   24.51472  46.663988
2  RIY-OUHOMH-1004  24.532244  46.651758
3  RIY-OUHOHH-1007  24.529029  46.653571
4  RIY-OUHOHH-1006  24.530071  46.651934
5  RIY-OUHOHH-1005  24.531786   46.65279
6  RIY-OUHOMH-1001  24.535972  46.649456
7  RIY-DIRAHH-0151  24.495407  46.641877
8  RIY-DIRAHH-0152  24.494105  46.644253
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...