我有一堆带有额外索引列的数据集,分别称为“未命名:0”,“未命名:1”等,我想创建一个函数来删除这些数据。我的代码如下:
def cleanDf(df):
'''Remove unwanted index columns from df'''
for col, row in df.iteritems():
for i in range(len(df.columns)):
if ('Unnamed:'+str(' ')+str(i)) == col:
df = df.drop([col], axis=1)
else:
pass
return df
但是,当我在数据帧上运行它时,索引列仍然存在,但更改为“未命名:0.1”。为什么会这样?
答案 0 :(得分:1)
您不需要:for col, row in df.iteritems():
。试试:
to_drop = [col for col in df.columns if 'Unnamed:' in col]
df = df.drop(to_drop, axis=1)
答案 1 :(得分:1)
或者您可以这样做
df = df[df.columns[~df.columns.str.startswith('Unnamed:')]]
(我一直认为那是笨拙的,但是哦)
我想您也可以.loc
:
df = df.loc[:,~df.columns.str.startswith('Unnamed:')]