我有很多列的資料框。現在我正在修剪幾列以減少文本長度。
代碼:
xdf = pd.DataFrame({'Column1':[10,25],'Column2':[10,25],'Fix_col':[10,25]})
## Rename `Column1` to `C1` and for `C2` as well
req_cols = ['Column1','Column2']
xdf[req_cols].columns = [x[0] y for name in xdf[req_cols].str.findall(r'([A-Za-z] )(\d )' for x,y in name]
目前的解決方案:
print([x[0] y for name in xdf[req_cols].str.findall(r'([A-Za-z] )(\d )' for x,y in name])
['C1','C2']
print(xdf[req_cols].columns)
['Column1','Column2']
列名沒有改變。不知道為什么?
預期答案:
xdf.columns = ['C1','C2','Fix_col']
uj5u.com熱心網友回復:
您可以使用
import pandas as pd
import re
xdf = pd.DataFrame({'Column1':[10,25],'Column2':[10,25],'Fix_col':[10,25]})
req_cols = ['Column1','Column2']
xdf.rename(columns=lambda x : x if x not in req_cols else re.sub(r'^(\D?)\D*(\d*)', r'\1\2', x), inplace=True)
輸出xdf.columns:
Index(['C1', 'C2', 'Fix_col'], dtype='object')
請參閱正則運算式演示。細節:
^- 字串的開始(\D?)- 第 1 組 (\1):可選的非數字字符\D*- 零個或多個非數字字符(\d*)- 第 2 組 (\2):零個或多個數字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433556.html
上一篇:創建組ID序列但省略特定行
