С точки зрения скорости вариант 1 кажется лучшим. Очевидно, исходя из других ответов, это не значит, что на самом деле это лучший вариант.
In [52]: import timeit
In [53]: s1 = """
...: import pandas as pd
...: df=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10],'c':[11,12,13,14,15]})
...: del df['a']
...: """
In [54]: s2 = """
...: import pandas as pd
...: df=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10],'c':[11,12,13,14,15]})
...: df=df.drop('a',1)
...: """
In [55]: s3 = """
...: import pandas as pd
...: df=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10],'c':[11,12,13,14,15]})
...: df=df[['b','c']]
...: """
In [56]: timeit.timeit(stmt=s1, number=100000)
Out[56]: 53.37321400642395
In [57]: timeit.timeit(stmt=s2, number=100000)
Out[57]: 79.68139410018921
In [58]: timeit.timeit(stmt=s3, number=100000)
Out[58]: 76.25269913673401