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

时间:2019-06-24 14:19:37

标签: pandas

我使用以下熊猫表情

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

我建议解决重复列问题

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