使用原始列名的某些部分重命名数据框中的列名
renaming the column names in dataframe using some parts of original column name
我有一个包含很长列名的巨大数据框
import pandas as pd
df = pd.DataFrame({'mynumber': [11, 20, 25],
'Raja_trial1:gill234_pit_type_id@rng': [4, 5, 42],
'Raja_trial1:Perm_king_que@pmcx[x1]': [0, 2, 3],
'Dun_mere_fer45:Hisota_gul_har23@cyu[9]': [4, 5, 42],
'Pit_chb1:reet_kaam_nix@opdx[x1]': [2, 1, 1],
})
我想重命名一些列,例如下面的数据框。
outputdf = pd.DataFrame({'mynumber': [11, 20, 25],
'trial1:type_id': [4, 5, 42],
'trial1:king_que': [0, 2, 3],
'fere45:gul_har23': [4, 5, 42],
'chb1:kaam_nix': [2, 1, 1],
})
您可以尝试拆分列名
import re
def rename(col):
a, b, _, = re.split(':|@', col)
return a.split('_')[-1] + ':' + '_'.join(b.split('_')[-2:])
df.columns = df.columns[0:1].tolist() + [rename(col) for col in df.columns[1:]]
您可以使用一个正则表达式实现此目的:
df.columns = df.columns.str.replace(r'.*?([^_]+:).+?([^_]+_[^_]+)@.*',
r'', regex=True)
输出:
mynumber trial1:type_id trial1:king_que fer45:gul_har23 chb1:kaam_nix
0 11 4 0 4 2
1 20 5 2 5 1
2 25 42 3 42 1
要了解它的工作原理,您可以查看 regex demo。
我有一个包含很长列名的巨大数据框
import pandas as pd
df = pd.DataFrame({'mynumber': [11, 20, 25],
'Raja_trial1:gill234_pit_type_id@rng': [4, 5, 42],
'Raja_trial1:Perm_king_que@pmcx[x1]': [0, 2, 3],
'Dun_mere_fer45:Hisota_gul_har23@cyu[9]': [4, 5, 42],
'Pit_chb1:reet_kaam_nix@opdx[x1]': [2, 1, 1],
})
我想重命名一些列,例如下面的数据框。
outputdf = pd.DataFrame({'mynumber': [11, 20, 25],
'trial1:type_id': [4, 5, 42],
'trial1:king_que': [0, 2, 3],
'fere45:gul_har23': [4, 5, 42],
'chb1:kaam_nix': [2, 1, 1],
})
您可以尝试拆分列名
import re
def rename(col):
a, b, _, = re.split(':|@', col)
return a.split('_')[-1] + ':' + '_'.join(b.split('_')[-2:])
df.columns = df.columns[0:1].tolist() + [rename(col) for col in df.columns[1:]]
您可以使用一个正则表达式实现此目的:
df.columns = df.columns.str.replace(r'.*?([^_]+:).+?([^_]+_[^_]+)@.*',
r'', regex=True)
输出:
mynumber trial1:type_id trial1:king_que fer45:gul_har23 chb1:kaam_nix
0 11 4 0 4 2
1 20 5 2 5 1
2 25 42 3 42 1
要了解它的工作原理,您可以查看 regex demo。