考虑使用具有相同名称的列的数据帧(显然这确实发生了,目前我有这样的数据集!:()
>>> df = pd.DataFrame({"a":range(10,15),"b":range(5,10)})
>>> df.rename(columns={"b":"a"},inplace=True)
df
a a
0 10 5
1 11 6
2 12 7
3 13 8
4 14 9
>>> df.columns
Index(['a', 'a'], dtype='object')
Run Code Online (Sandbox Code Playgroud)
我希望当按索引删除时,只有具有相应索引的列才会消失,但显然情况并非如此.
>>> df.drop(df.columns[-1],1)
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
有没有办法摆脱具有重复列名称的列?
编辑:我选择第一列的误导值,现在修复
EDIT2:预期的结果是
a
0 10
1 11
2 12
3 13
4 14
Run Code Online (Sandbox Code Playgroud)
EdC*_*ica 14
实际上只是这样做:
In [183]:
df.ix[:,~df.columns.duplicated()]
Out[183]:
a
0 0
1 1
2 2
3 3
4 4
Run Code Online (Sandbox Code Playgroud)
所以这个索引所有行然后使用从中生成的列掩码duplicated并使用反转掩码~
输出来自duplicated:
In [184]:
df.columns.duplicated()
Out[184]:
array([False, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
UPDATE
由于.ix被弃用(因为V 0.20.1),你应该做到以下任何一项:
df.iloc[:,~df.columns.duplicated()]
Run Code Online (Sandbox Code Playgroud)
要么
df.loc[:,~df.columns.duplicated()]
Run Code Online (Sandbox Code Playgroud)
感谢@DavideFiocco提醒我
| 归档时间: |
|
| 查看次数: |
5087 次 |
| 最近记录: |