Python 按索引删除列

Python 按索引删除列,python,pandas,Python,Pandas,假设我有这样一个数据帧: >>> df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['a','b','b']) >>> df a b b 0 1 2 3 1 4 5 6 2 7 8 9 我想删除第二列'b'。如果我只使用del语句,它将删除'b'两列: >>> del df['b'] >>> df a 0 1 1 4 2

假设我有这样一个数据帧:

>>> df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['a','b','b'])
>>> df
   a  b  b
0  1  2  3
1  4  5  6
2  7  8  9
我想删除第二列
'b'
。如果我只使用
del
语句,它将删除
'b'
两列:

>>> del df['b']
>>> df
   a
0  1
1  4
2  7
我可以使用
.iloc[]
按索引选择列并重新分配数据帧,但如何仅删除第二个
'b'
列,例如按索引

df = df.drop(['b'], axis=1).join(df['b'].ix[:, 0:1])

>>> df
   a  b
0  1  2
1  4  5
2  7  8
或者只是为了这个案子

df = df.ix[:, 0:2]

但我认为还有其他更好的方法。

这很有趣。重新分配听起来是适当的举措。三思而后行,您知道要删除第二个
b
,而不是基于列名,因为您有重复的列名,而是基于索引。因此,您的算法以某种方式使用了该索引。那么为什么不将列更改为基于索引的列呢?@Boud很好的建议,实际上我可以重命名我要删除的所有列,然后按名称删除,将在到达homeafaik时尝试,
del df['b']
转换为块管理器命令以从所有块中删除相关项,即大致等于重新分配
df=df.iloc[:,:2]
这是保留我找到的重复列的第一个实例的最佳方法!