如果列名包含“ _”,我想删除列名的前三个字符。
我当前的列名如下:
US_aaa NL_bbb CN_ccc
abc def ghi
123 345 456
我希望数据看起来像这样:
aaa bbb ccc
abc def ghi
123 345 456
我当前的代码如下:
for col in category.columns():
if "_" in col:
category[col]=category[col][3:]
不确定我在做什么错。
答案 0 :(得分:2)
此解决方案不关心'_'之后有多少个字符
df = pd.DataFrame([['abc', 'def', 'ghi'], [123, 456, 789]], columns=['US_aaa', 'NL_bbb', 'CN_ccc'])
US_aaa NL_bbb CN_ccc
0 abc def ghi
1 123 456 789
df.columns =[x.split('_')[-1] for x in df.columns]
aaa bbb ccc
0 abc def ghi
1 123 456 789
如果没有“ _”:
USaaa NL_bbb CN_ccc
0 abc def ghi
1 123 456 789
您得到:
USaaa bbb ccc
0 abc def ghi
1 123 456 789
答案 1 :(得分:1)
您的if语句后的行也不正确,()
也不需要df.columns
。检查以下代码以获取所需的列名:
df
US_aaa NL_bbb CN_ccc
0 abc def ghi
1 123 345 456
df.columns = [col[3:] if '_' in col else col for col in df.columns]
df.columns
Index(['aaa', 'bbb', 'ccc'], dtype='object')
df
aaa bbb ccc
0 abc def ghi
1 123 345 456