微信公众号:数据皮皮侠
如果你觉得该公众号对你有帮助,欢迎关注、推广和宣传
在df中有几个列相同的列.需要重命名它们.通常的重命名重命名全部
无论如何,我可以将下面的blah(s)重命名为blah1,blah4,blah5?
import numpy as np
import matplotlib.pyplot as plt
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
我希望在Pandas中找到一个解决方案而不是一般的Python解决方案.
Column的get_loc()函数返回一个屏蔽数组,如果它找到重复项,其中“True”值指向找到重复项的位置.然后我使用掩码将新值分配到这些位置.在我的情况下,我提前知道我将获得多少重复以及我将要分配给他们但是看起来像df.columns.get_duplicates()会返回所有重复的列表然后你可以如果您需要更通用的dup-weeding操作,请将该列表与get_loc()结合使用
cols=pd.Series(df.columns)
for dup in df.columns.get_duplicates(): cols[df.columns.get_loc(dup)]=[dup+'.'+str(d_idx) if d_idx!=0 else dup for d_idx in range(df.columns.get_loc(dup).sum())]
df.columns=cols
blah blah2 blah3 blah.1 blah.2
0 0 1 2 3 4
1 5 6 7 8 9


