Заполните пропущенные значения на основе ряда и заполните второй ряд на основе предыдущего или следующего ряда - PullRequest
1 голос
/ 14 марта 2020

У меня есть CSV с 4 столбцами. Файл содержит несколько пропущенных строк на основе серии.

Ввод: -

No  A   B   C
1   10  50  12
3   40  50  12
4   20  60  15
6   80  80  18

Ввод: -

No  A   B   C
1   10  50  12
2   10  50  12
3   40  50  12
4   20  60  15
5   20  60  15
6   80  80  18

Мне нужно python и pandas код для генерации вышеуказанного вывода.

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Использовать, если No - столбец - создать индекс по No и DataFrame.reindex по range со всеми возможными значениями:

v = range(df['No'].min(), df['No'].max() + 1)
df1 = df.set_index('No').reindex(v, method='ffill').reset_index()
print (df1)
   No   A   B   C
0   1  10  50  12
1   2  10  50  12
2   3  40  50  12
3   4  20  60  15
4   5  20  60  15
5   6  80  80  18

Использовать, если No Индексное решение немного изменено:

v = range(df.index.min(), df.index.max() + 1)
df1 = df.reindex(v, method='ffill')
print (df1)
     A   B   C
No            
1   10  50  12
2   10  50  12
3   40  50  12
4   20  60  15
5   20  60  15
6   80  80  18
0 голосов
/ 14 марта 2020

Создание кадра данных из отсутствующих строк

missing_list = [[i] + [pd.np.nan]*(df.shape[1] - 1) for i in range(df.No.min(), df.No.max()) if i not in df.No]
missing_df = pd.DataFrame(missing_list, columns=df.columns)

Конкат к исходному кадру данных, сортировка и прямая заливка

pd.concat([df, missing_df]).sort_values('No').ffill()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...