Pandas表达式导致列爆炸(或如何删除重复名称环境中包含子字符串的列)

Pandas expression causes column explosion (or how to delete columns that contain substring in duplicate names environment)

我使用以下pandas表情

1
df = df[df.columns[~df.columns.str.contains('Unnamed:')]]

删除包含未命名的列。我从这里拿到的
删除pandas dataframe

中的未命名列

由于某些原因,在某些情况下,此行会导致列爆炸
例如

1
2
df shape in (2000, 1451)
after dropping Unnamed (2000, 3851)

特别是在某些列具有相同名称(例如重复项)的情况下,似乎引起爆炸。

任何人都知道为什么会发生这种情况以及如何避免这种情况吗?

如何在允许重复名称的情况下删除具有某些子字符串的列?谢谢


当您显然具有重复的名称时,您将对列的名称进行切片。您要使用loc和布尔型掩码进行切片。

1
df = df.loc[:, ~df.columns.str.contains('Unnamed:')]]


建议我解决重复列问题

1
2
3
4
5
6
7
8
9
s=df.columns.to_series()
s1=s.groupby(s).cumcount().astype(str)
newc=s+s1.mask(s1=='0','')
Out[717]:
a     a
a    a1
b     b
dtype: object
df.columns=newc