Вам не нужно транспонировать, вы можете указать ось:
df.ffill(1).bfill(1)
col1 col2
0 3.375000 4.075000
1 2.450000 1.567100
2 NaN NaN
3 3.248083 3.248083
4 2.335725 2.335725
5 2.150000 3.218750
Если у вас есть несколько столбцов, но вы не хотите прикасаться к некоторым из них, вы можете нарезать, заполнять иприсваивать обратно.
df
col1 col2 col3
0 3.375000 4.075000 NaN
1 2.450000 1.567100 2.0
2 NaN NaN 3.0
3 3.248083 NaN 5.0
4 NaN 2.335725 NaN
5 2.150000 3.218750 5.0
include = ['col1', 'col2']
# Or,
# exclude = ['col3']
# include = df.columns.difference(exclude)
df[include] = df[include].ffill(1).bfill(1)
df
col1 col2 col3
0 3.375000 4.075000 NaN
1 2.450000 1.567100 2.0
2 NaN NaN 3.0
3 3.248083 3.248083 5.0
4 2.335725 2.335725 NaN
5 2.150000 3.218750 5.0
Если столбцов всего два, вы также можете использовать combine_first
.
df.col1 = df.col1.combine_first(df.col2)
df.col2 = df.col2.combine_first(df.col1)
col1 col2
0 3.375000 4.075000
1 2.450000 1.567100
2 NaN NaN
3 3.248083 3.248083
4 2.335725 2.335725
5 2.150000 3.218750