有问题的数据框正在使用Tabula从pdf文件中读取,并在错误的位置获取了一些列。看起来像这样:
Index Name Date Time Exp QT Comm Load Notes
0 VT1 04/16 4:00 Glen 1600 Wheat NaN LTA/Book
1 VT2 04/16 4:00 Cof 16000 Wheat NaN Split/LTA
2 VT3 Glen 35100 Wheat LTA NaN NaN NaN
3 VT4 Glen 18416 Wheat Split/LTA NaN Nan NaN
我不确定为什么会这样,但是问题很明显,在此数据帧的最后几行中,格式不再能正确读取,开始忽略空单元格并将数据向左移动。我想做的是移动第2行和第3行,以便它们正确地面向列。最终结果应为:
Index Name Date Time Exp QT Comm Load Notes
0 VT1 04/16 4:00 Glen 1600 Wheat NaN LTA/Book
1 VT2 04/16 4:00 Cof 16000 Wheat NaN Split/LTA
2 VT3 NaN NaN Glen 35100 Wheat NaN LTA
3 VT4 NaN NaN Glen 18416 Wheat NaN Split/LTA
我想不出一种不包含过于复杂和效率低下的方法。
最佳答案
我认为您必须屏蔽所有符合条件的行。
在这种情况下,如果['Comm', 'Load', 'Notes']
总是NaN
。
mask = df[['Comm', 'Load', 'Notes']].isna().all(axis=1)
然后使用
.shift
并将其分配回数据框。df.loc[mask, 'Date':'Notes'] = df.loc[mask, 'Date':'Notes'].shift(2, axis=1)
df
Index Name Date Time Exp QT Comm Load Notes
0 0 VT1 04/16 4:00 Glen 1600 Wheat NaN LTA/Book
1 1 VT2 04/16 4:00 Cof 16000 Wheat NaN Split/LTA
2 2 VT3 NaN NaN Glen 35100 Wheat NaN LTA
3 3 VT4 NaN NaN Glen 18416 Wheat NaN Split/LTA