我有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