последовательный срез по одному символу номера

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

Есть номер 466896223223.

Нужно вывести в dataframe последовательный срез по одному символу с конца.

Результат:

466896223223

46689622322

4668962232

466896223

46689622

4668962

466896

46689

4668

466

46

Ответы

▲ 2

Вариант с генератором

def fun(number):
    while number:
        yield number
        number = number[:-1]


df = pd.DataFrame(fun('466896223223'))
print(df)
               0
0   466896223223
1    46689622322
2     4668962232
3      466896223
4       46689622
5        4668962
6         466896
7          46689
8           4668
9            466
10            46
11             4
▲ 1

Задача элементарная же...

import pandas as pd

def slices(phone):
    data = []
    for i in range(len(phone), 0, -1):
        data.append(phone[:i])
    df = pd.DataFrame(data, columns=["slice_number"])
    return df


print(slices("466896223223"))
▲ 1
import pandas as pd
num = "466896223223"
df = pd.DataFrame(num, index=range(len(num)), columns=["num"])
df["num"] = df.apply(lambda x: x["num"][:-x.name] if x.name else x["num"], axis=1)
             num
0   466896223223
1    46689622322
2     4668962232
3      466896223
4       46689622
5        4668962
6         466896
7          46689
8           4668
9            466
10            46
11             4
▲ 1

Можно реализовать через list comprehension:

import pandas as pd
num = "466896223223"
result = [num[:i] for i in range(len(num), 0, -1)]
pd.DataFrame(result, columns=["num"])

результат:

    num
0   466896223223
1   46689622322
2   4668962232
3   466896223
4   46689622
5   4668962
6   466896
7   46689
8   4668
9   466
10  46
11  4