из диапазона в последовательность (dataframe)
Есть начало и конец диапазона. Помогите вывести список всех последовательностей, если можно, в 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
Ответы (2 шт):
Автор решения: Step1709
→ Ссылка
Вот функция, которая, принимая на вход датафрейм, будет возвращать список элементов, находящихся в диапазоне 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
Автор решения: strawdog
→ Ссылка
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, ...