из диапазона в последовательность (dataframe)

Рейтинг: 1Ответов: 2Опубликовано: 03.05.2023

Есть начало и конец диапазона. Помогите вывести список всех последовательностей, если можно, в dataframe

Start End
00 02
092 107
019 109

Результат: 00,01,02,092,093,094,095,096,097,098,099,100,101,102,103,104,105,106,107,019,020,021,022,023,024,025,...,107

Ответы

▲ 1

Вот функция, которая, принимая на вход датафрейм, будет возвращать список элементов, находящихся в диапазоне Start и End. Названия столбцов и датафрйма можете поменять.

def var_list(df):
    var_l = []
    for x in range(0, len(df['Start'])):
        l = len(df['End'].iloc()[x]) # узнаем длинну элемента для последующего добавления 0 в начало
        elements = []
        elements = list(range(int(df['Start'].iloc()[x]),int(df['End'].iloc()[x])+1))
        for element in elements:
            el = str(element)
            while len(el) < l:
                el = '0' + el
            var_l.append(el)
    return var_l
▲ 1
import pandas as pd

df = pd.DataFrame({"Start":["00", "092", "019"], "End":["02", "107", "109"]})
  Start  End
0    00   02
1   092  107
2   019  109
df["ranges"] = df.apply(lambda x: [f'{n:0{len(x["End"])}}'
                                   for n in range(pd.to_numeric(x["Start"]),
                                                  pd.to_numeric(x["End"]).astype(int)+1)], axis=1)
    Start   End ranges
0   00  02  [00, 01]
1   092 107 [092, 093, 094, 095, 096, 097, 098, 099, 100, ...
2   019 109 [019, 020, 021, 022, 023, 024, 025, 026, 027, ...