gpt4 book ai didi

pandas - Pandas 按索引删除列会删除所有具有相同名称的列

转载 作者:行者123 更新时间:2023-12-04 03:19:43 30 4
gpt4 key购买 nike

考虑以下具有相同名称的列的数据框(显然,这确实发生了,目前我有一个像这样的数据集!:()

>>> 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')


我希望按索引删除时,只有具有相应索引的列会消失,但是显然不是这样。

>>> df.drop(df.columns[-1],1)

0
1
2
3
4


有没有一种方法可以摆脱具有重复列名的列?

编辑:我为第一列选择误导性的值,现在固定

EDIT2:预期结果是

  a
0 10
1 11
2 12
3 13
4 14

最佳答案

实际上只是这样做:

In [183]:
df.ix[:,~df.columns.duplicated()]

Out[183]:
a
0 0
1 1
2 2
3 3
4 4


因此,此索引将对所有行进行索引,然后使用从 duplicated生成的列掩码,并使用 ~反转掩码

duplicated的输出:

In [184]:
df.columns.duplicated()

Out[184]:
array([False, True], dtype=bool)


更新

由于 .ixdeprecated(因为v 0.20.1),因此您应该执行以下任一操作:

df.iloc[:,~df.columns.duplicated()]


要么

df.loc[:,~df.columns.duplicated()]


感谢@DavideFiocco提醒我

关于pandas - Pandas 按索引删除列会删除所有具有相同名称的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797964/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com