Я столкнулся с проблемой форматирования, когда требовалось смещение столбца, которое можно проиллюстрировать примерно так:
df =
A B C D E
0 foo spam egg 0 0
1 bar egg 1 0.84 NaN
2 bar egg 2 0.91 NaN
3 foo spam egg 3 0.14
4 foo spam egg 4 -0.76
на это:
df =
A B C D E
0 foo spam egg 0 0.00
1 bar spam egg 1 0.84
2 bar spam egg 2 0.91
3 foo spam egg 3 0.14
4 foo spam egg 4 -0.76
Для которого я сделал следующее исправление:
columnShift = df.columns[-3:]
indexes = [i for i,x in enumerate(df.B) if x =='egg']
for i in indexes:
for c in np.arange(1,len(columnShift)):
df.loc[i,columnShift[-c]] = df.loc[i,columnShift[-(c+1)]]
Он функциональный, но чувствует себя не элегантно и занимает довольно много времени.Поэтому мне было интересно, есть ли лучшее решение для применения к большим фреймам данных.