社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python修剪数据帧的多个列名

Mainland • 3 年前 • 1288 次点击  

我有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
 
1288 次点击  
文章 [ 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