Python 删除少数列后,从0重新指定列的标签

Python 删除少数列后,从0重新指定列的标签,python,pandas,dataframe,Python,Pandas,Dataframe,我通过以下命令删除了一些重复的列 columns = XY.columns[:-1].tolist() XY1 = XY.drop_duplicates(subset=columns,keep='first'). 结果如下: 现在列的标签是1 222 223 0(末尾的0标签是因为concat带有另一个df!!)我希望列是 从索引0开始重新标记。我该怎么做 因此,首先创建一个具有所需映射的字典 trafo_dict = {x:y for x,y in zip( [1,222,223,0],np

我通过以下命令删除了一些重复的列

columns = XY.columns[:-1].tolist()
XY1 = XY.drop_duplicates(subset=columns,keep='first').
结果如下:

现在列的标签是1 222 223 0(末尾的0标签是因为concat带有另一个df!!)我希望列是 从索引0开始重新标记。我该怎么做


因此,首先创建一个具有所需映射的字典

trafo_dict = {x:y for x,y in zip( [1,222,223,0],np.linspace(0,3,4))}
然后需要重命名列。这可以通过pd.DataFrame.rename完成:

  XY1 = XY1.rename(columns=trafo_dict)
编辑:如果希望以更通用的方式使用:

np.linspace(0,XY1.shape[1]-1,XY1.shape[1])

什么是打印(XY.head().to_dict())?它起作用了。但是它增加了0.0,1.0,2.0。。。如何使其成为整数?使用trafo_dict={x:int(y)…}来执行soIf i concat列上的两个df,有没有简单的方法重置列ID?同样使用上述方法,如果原始标签在两列中出现两次,则无法解决问题:trafo_dict={x:y代表x,y在zip中(list(XY.columns.values),np.linspace(0,XY.shape[1]-1,XY.shape[1])}XY.rename(columns=trafo_dict,inplace=True)print(XY.columns.values)[181.0,1.0,2.0,3.0,4.0,5.0,…174.0,175.0,176.0,177.0,178.0,179.0,180.0,181.0]最初,列0和最后一列的标签是0。一个肮脏但快速的解决方法应该是:在合并之前编辑列名,例如,1,2,3,用于df1,2,3等。合并结果在df3中,并使用我为df3建议的程序
np.linspace(0,XY1.shape[1]-1,XY1.shape[1])