У меня есть pd.dataframe, который выглядит так:
key_value a b c d e
value_01 1 10 x NaN NaN
value_01 NaN 12 NaN NaN NaN
value_01 NaN 7 NaN NaN NaN
value_02 7 4 y NaN NaN
value_02 NaN 5 NaN NaN NaN
value_02 NaN 6 NaN NaN NaN
value_03 19 15 z NaN NaN
Так что теперь на основе key_value,
Для столбца 'a' & 'c' я хочу скопировать значение последней ячейки из того же столбца 'a' & 'c', основываясь на значении ключа.
Для другого столбца «d» я хочу скопировать значение строки «i - 1» из столбца «b» в столбец «d» i-й ячейки.
Наконец, для столбца 'e' я хочу скопировать сумму ячеек 'i - 1' из столбца 'b' в столбец 'e' i'я ячейка.
Для каждого ключевого_значения столбцы 'a', 'b' & 'c' имеют некоторое значение в первой строке, на основе которого копируются следующие значения в другие столбцы или для них. создается для.
key_value a b c d e
value_01 1 10 x NaN NaN
value_01 1 12 x 10 10
value_01 1 7 x 12 22
value_02 7 4 y NaN NaN
value_02 7 5 y 4 4
value_02 7 6 y 5 9
value_03 8 15 z NaN NaN
Мой текущий подход:
size = df.key_value.size
for i in range(size):
if pd.isna(df.a[i]) and df.key_value[i] == output.key_value[i - 1]:
df.a[i] = df.a[i - 1]
df.c[i] = df.c[i - 1]
df.d[i] = df.b[i - 1]
df.e[i] = df.e[i] + df.b[i - 1]
Для таких столбцов, как 'a' и 'b', значения NaN находятся в одинаковых индексах строк.
Мой подход работает, но занимает очень много времени, так как в моем фрейме данных содержится более 50000 записей, мне было интересно, есть ли другой способ сделать это, так как у меня есть несколько столбцов, таких как 'a' и 'b', куда нужно копировать значения на основе 'key_value' и некоторых столбцов, где значения вычисляются с использованием, скажем, столбца типа 'b'