Можно ли вставить недостающие порядковые номера в Python? - PullRequest
1 голос
/ 19 июня 2020

Сейчас я использую Excel для этой задачи, но мне было интересно, знает ли кто-нибудь из вас способ найти и вставить отсутствующие порядковые номера в python.

Допустим, у меня есть фрейм данных:

import pandas as pd

data = {'Sequence':  [1, 2, 4, 6, 7, 9, 10],
        'Value': ["x", "x", "x", "x", "x", "x", "x"]
        }

df = pd.DataFrame (data, columns = ['Sequence','Value'])

И теперь я хочу использовать здесь некоторый код, чтобы найти недостающие порядковые номера в столбце «Последовательность» и оставить пустые места в столбце « Значения »для строк пропущенных порядковых номеров. Чтобы получить следующий результат:

    print(df)

   Sequence Value
0         1     x
1         2     x
2         3     
3         4     x  
4         5     
5         6     x
6         7     x
7         8
8         9     x
9         10    x

Еще лучше было бы решение, в котором вы также можете определить начало и конец последовательности. Например, когда последовательность начинается с 3, но вы хотите, чтобы она начиналась с 1 и заканчивалась на 12. Но решение только для первой части уже очень поможет. Заранее спасибо !!

Ответы [ 2 ]

3 голосов
/ 19 июня 2020

Вы можете set_index и reindex, используя диапазон от минимального и максимального значений Sequence:

(df.set_index('Sequence')
   .reindex(range(df.Sequence.iat[0],df.Sequence.iat[-1]+1), fill_value='')
   .reset_index())

   Sequence Value
0         1     x
1         2     x
2         3      
3         4     x
4         5      
5         6     x
6         7     x
7         8      
8         9     x
9        10     x
0 голосов
/ 19 июня 2020

Вы можете попробовать это:

Sequence = [1, 2, 4, 6, 7, 9, 10]
df = pd.DataFrame(np.arange(1,12), columns=["Sequence"])
df = df.loc[df.Sequence.isin(Sequence), 'Value'] = 'x'
df = df.fillna('')

Сначала вы создаете свой DataFrame с заданным диапазоном значений, которые вы хотите, чтобы он имел для последовательности. Затем вы устанавливаете «Value» на «x» для строк, где «Sequence» находится в вашем списке Sequence. Наконец, вы заполняете недостающие значения символом "".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...