разделить число на несколько частей в зависимости от длины номера - PullRequest
0 голосов
/ 09 марта 2020

У меня есть фрейм данных, состоящий из одного столбца с именем Numbers и одного значения очень длинного числа:

Numbers
238465850 ...

Теперь я хочу создать другой фрейм данных одного столбца также имеет несколько значений, полученных из деления исходного числа на равные части в зависимости от длины целых чисел. Итак, предположим, что оригинальное число 238465850 ... состоит из 1 миллиона целых чисел. Я хочу разбить это число на 1000000/100 номеров. Новый фрейм данных должен иметь один столбец из 10000 значений, например:

Числа
238465850 ...
347586903 ...
638456995 ...
. .

Спасибо

1 Ответ

0 голосов
/ 09 марта 2020

Пример игрушки, где вы на самом деле хотите делить на n_parts= 2, а не на 100:

>>> big_number = 15615384984136871611246544399657
>>> big_number = str(big_number)
>>> n_parts= 2
>>> n_digits = len(big_number) // n_parts
>>> [int(big_number[i:i+n_digits]) for i in range(0, len(big_number), n_digits)]
[1561538498413687, 1611246544399657]

Поместите это в функцию:

>>> def make_parts(big_number: int, n_parts: int):
>>>     big_number = str(big_number)
>>>     n_digits = len(big_number) // n_parts
>>>     return [int(big_number[i:i+n_digits]) for i in range(0, len(big_number), n_digits)]

Теперь предположим, что ваш входной кадр данных был назван df и имел только одно значение, вы можете создать новое df2 со следующим:

>>> import pandas as pd
>>> df2 = pd.DataFrame(make_parts(df.iloc[0]["Numbers"], n_parts=100), columns=["Numbers"])

В целом (для примера с игрушкой обратите внимание на параметр n_parts) :

>>> df = pd.DataFrame([15615384984136871611246544399657], columns=["Numbers"])
>>> df2 = pd.DataFrame(make_parts(df.iloc[0]["Numbers"], n_parts=2), columns=["Numbers"])
>>> print(df2)

            Numbers
0  1561538498413687
1  1611246544399657
...