如何去除Pandas中df.columns及字典列键名的u'前缀?
Pandas Unicode前缀(u')去除方案
问题1:去除df.columns结果中的u'前缀
这个u'是Python 2中Unicode字符串的标识,Python 3里默认字符串就是Unicode,不会出现该前缀。如果是在Python 2环境下处理:
- 直接将列名转换为普通字符串:
df.columns = [str(col) for col in df.columns]
- 若列名包含非ASCII字符,可用编码解码方式处理:
df.columns = df.columns.str.encode('utf-8').str.decode('utf-8')
问题2:合并列生成字典时去除键名的u'前缀
你之前尝试的代码错误对键做了k[1:]切片,实际上k本身是Unicode字符串,直接转为普通字符串即可解决问题。
方案一:生成字典后修正
对已生成的ratings列批量处理:
df['ratings'] = df['ratings'].apply(lambda x: {str(k): v for k, v in x.items()})
方案二:生成字典时直接处理
在生成字典的步骤就把列名转为普通字符串,避免后续修正:
df.set_index('id').apply(lambda row: {str(col): row[col] for col in row.index}, axis=1).reset_index(name='ratings')
执行后就能得到键名不带u'前缀的目标结果。
内容的提问来源于stack exchange,提问作者Danish
相关产品推荐
相关产品推荐

