Py学习  »  Python

Python修剪数据帧的多个列名

Mainland • 3 年前 • 1402 次点击  

我有20列的数据框。它们都有一个共同的文本和序列号。我想修剪文本部分并缩短名称。下面是一个例子:

xdf = pd.DataFrame({'Column1':[10,20],'Column2':[80,90]})

   Column1  Column2
0       10       80
1       20       90

预期产出:

        C1       C2
0       10       80
1       20       90

解决方案1:

oldcols = ['Column1','Column2']
newcols = ['C1','C2']
xdf.rename(columns=dict(zip(oldcols,newcols)),inplace=True)

        C1       C2
0       10       80
1       20       90

解决方案2:

for i in range(len(oldcols)):
    xdf.rename(columns={'%s'%(xdf[i]):'%s'%(xdf[i].replace('Column','C'))},inplace=True)

raise KeyError(key) from err

解决方案1很好,但我必须准备一个新旧列名列表。相反,我希望遍历每个列名并替换列文本。然而,解决方案2不起作用。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133413
 
1402 次点击  
文章 [ 1 ]  |  最新文章 3 年前
enke
Reply   •   1 楼
enke    3 年前

你可以用 str.findall 在列上拆分为文本和数字;然后使用列表理解,只取第一个字母,并将其与每个列名称的数字连接起来:

xdf.columns = [x[0]+y for li in xdf.columns.str.findall(r'([A-Za-z]+)(\d+)') for x,y in li]

输出:

   C1  C2
0  10  80
1  20  90