#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных, как показано ниже
A B C D
0 1 2 3.3 4
1 NaT NaN NaN NaN
2 NaT NaN NaN NaN
3 5 6 7 8
4 NaT NaN NaN NaN
5 NaT NaN NaN NaN
6 9 1 2 3
7 NaT NaN NaN NaN
8 NaT NaN NaN NaN
Мне нужно скопировать значения первой строки (1,2,3,4) до ненулевой строки с индексом 2. Затем скопируйте значения строк (5,6,7,8) до ненулевой строки с индексом 5 и скопируйте (9,1,2,3) до строки с индексом 8 и так далее. Есть ли какой-нибудь способ сделать это в Python или Панд. Быстрая помощь приветствуется! Также необходимо не заменять колонку D
Заполнение столбца C дает 3,3456 в качестве значения для следующей строки
Ожидаемый Результат:
A B C D
0 1 2 3.3 4
1 1 2 3.3 NaN
2 1 2 3.3 NaN
3 5 6 7 8
4 5 6 7 NaN
5 5 6 7 NaN
6 9 1 2 3
7 9 1 2 NaN
8 9 1 2 NaN
Ответ №1:
Вопрос был изменен, поэтому для прямого заполнения всех столбцов без D
использования Index.difference
ffill
имен столбцов в списке:
cols = df.columns.difference(['D'])
df[cols] = df[cols].ffill()
Или создайте маску для всех имен столбцов без D
:
mask = df.columns != 'D'
df.loc[:, mask] = df.loc[:, mask].ffill()
ИЗМЕНИТЬ: Я не могу воспроизвести вашу проблему:
df = pd.DataFrame({'a':[2114.201789, np.nan, np.nan, 1]})
print (df)
a
0 2114.201789
1 NaN
2 NaN
3 1.000000
print (df.ffill())
a
0 2114.201789
1 2114.201789
2 2114.201789
3 1.000000
Комментарии:
1. Спасибо. Кроме того, плавающие значения округляются неправильно независимо от значений при использовании ffill
2. Проблема сейчас в плавающих числах
3. @Avinash — хммм, не могли бы вы быть более конкретным?
4. @Avinash — Нужны
D
целые числа столбцов — целые числа сNaN
s ? Или у какого-то столбца есть первая строкаNaN
, поэтому он не повторяет первые значения?5. У меня было значение 1,53 для одного из столбцов DF. при использовании ffill () он заполняется как 1.52345. не тот же 1.53