pandas DataFrame reset?可以处理重复列名的索引?

2024-05-18 05:13:50 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有等效的pandas.DataFrame.reset_index()对列进行操作,并且可以处理重复列名的情况?我希望它放弃列名并返回一个默认的编号索引0,1,2。。对于柱子。(当我有重复的列名时,df.rename或{}等方法不起作用。)

样本输入:

 pd.DataFrame(np.random.rand(5, 3), columns = ['A', 'A', 'B'])

     A   A   B
0   0.5 0.3 0.9
1   0.7 0.9 0.3
2   0.9 0.4 0.8
3   0.6 0.2 0.9
4   0.7 0.4 0.6

预期产量:

^{pr2}$

Tags: 方法dataframepandasdfindexnp情况random
2条回答

range^{}的列长度一起使用:

df.columns = range(df.shape[1])
print (df)
          0         1         2
0  0.228080  0.884450  0.753401
1  0.176790  0.741979  0.525305
2  0.680255  0.730258  0.449681
3  0.169420  0.660825  0.986554
4  0.302204  0.040413  0.902899

另一个带有参数^{}^{}的双重转置的解决方案:

^{pr2}$

您可以使用set_axis()方法:

In [54]: df
Out[54]:
          A         A         B
0  0.934900  0.817182  0.166270
1  0.064543  0.139431  0.249576
2  0.709349  0.731913  0.965048
3  0.284955  0.479898  0.496652
4  0.520749  0.464256  0.999993

In [55]: df.set_axis(1, range(len(df.columns)))

In [56]: df
Out[56]:
          0         1         2
0  0.934900  0.817182  0.166270
1  0.064543  0.139431  0.249576
2  0.709349  0.731913  0.965048
3  0.284955  0.479898  0.496652
4  0.520749  0.464256  0.999993

相关问题 更多 >