Python修剪数据帧的多个列名



我有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不起作用。

您可以在列上使用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

最新更新