У меня есть такой фрейм данных,
df:
col1 col2 col3
1 cat 4
nan dog nan
3 tiger 3
2 lion 9
nan frog nan
nan elephant nan
Я хочу создать фрейм данных из этого фрейма данных, в котором id есть значения nan в col1, значения col2 будут добавлены к предыдущему значению строки.
например, желаемый кадр выходных данных будет:
col1 col2 col3
1 catdog 4
3 tiger 3
2 lionfrogelephant 9
Как это сделать с помощью панд?
да спасибо работаю
Спасибо, что приняли!






Используйте прямое заполнение пропущенных значений и совокупный join:
cols = ['col1','col3']
df[cols] = df[cols].ffill()
df = df.groupby(cols)['col2'].apply(''.join).reset_index()
print (df)
col1 col3 col2
0 1.0 4.0 catdog
1 2.0 9.0 lionfrogelephant
2 3.0 3.0 tiger
Или, при необходимости, заполнить пропущенные значения во всех столбцах:
df = df.ffill().groupby(['col1','col3'])['col2'].apply(''.join).reset_index()
print (df)
col1 col3 col2
0 1.0 4.0 catdog
1 2.0 9.0 lionfrogelephant
2 3.0 3.0 tiger
Как работает мое решение?