大数跨境
0
0

Panda的DataFrame – 重命名多个具有相同名称的列

Panda的DataFrame – 重命名多个具有相同名称的列 数据皮皮侠
2020-05-12
1
导读:微信公众号:数据皮皮侠如果你觉得该公众号对你有帮助,欢迎关注、推广和宣传 在df中有几个列相同的列.


微信公众号:数据皮皮侠
如果你觉得该公众号对你有帮助,欢迎关注、推广和宣传


     在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

【声明】内容源于网络
0
0
数据皮皮侠
社科数据综合服务中心,立志服务百千万社科学者
内容 2137
粉丝 0
数据皮皮侠 社科数据综合服务中心,立志服务百千万社科学者
总阅读16
粉丝0
内容2.1k