我在df中有几个相同的列。需要重命名它们。通常的重命名会重命名所有 无论如何,我可以将下面的blah重命名为blah1,blah4,blah5?
In [6]:
df=pd.DataFrame(np.arange(2*5).reshape(2,5))
df.columns=['blah','blah2','blah3','blah','blah']
df
Out[6]:
blah blah2 blah3 blah blah
0 0 1 2 3 4
1 5 6 7 8 9
在[7]中:
df.rename(columns = {'blah':'blah1'})
Out[7]:
blah1 blah2 blah3 blah1 blah1
0 0 1 2 3 4
1 5 6 7 8 9
你可以用这个:
那么
因此,df:
那么
因此,df:
Starting with Pandas 0.19.0 ^{} has improved support for duplicate column names
所以我们可以尝试使用内部方法:
这就是“魔力”功能:
我希望在Pandas中找到一个解决方案,而不是一般的Python解决方案。 如果列的get_loc()函数找到指向找到重复项的位置的值为“True”的重复项,则返回一个屏蔽数组。然后我使用掩码将新值分配到这些位置。在我的例子中,我提前知道要得到多少个dup,以及要分配给它们什么,但是看起来df.columns.get_duplicates()将返回所有dup的列表,如果需要更通用的dup消除操作,则可以将该列表与get_loc()结合使用
新的更好的方法(更新日期:2019年12月3日)
下面的代码比上面的代码好。从下面的另一个答案(@SatishSK)复制:
输出:
相关问题 更多 >
编程相关推荐