如何将Pandas导出的二维列表中的逗号替换为冒号?
解决方法
1. 直接将二维列表转为字典(最简便)
Python的dict()构造函数可以直接接收这种每个元素是[key, value]对的二维列表,不需要手动替换逗号和冒号:
original_list = [['ASAP', 'As soon as possible'], ['AM', 'Before Midday'], ['PM', 'After Midday'], ['DOB', 'Date of Birth']] col_mapping = dict(original_list)
执行后col_mapping就是你需要的字典:
{'ASAP': 'As soon as possible', 'AM': 'Before Midday', 'PM': 'After Midday', 'DOB': 'Date of Birth'}
之后直接用这个字典修改DataFrame列名:
df.rename(columns=col_mapping, inplace=True)
2. 替换空格为下划线
替换空格和处理逗号的逻辑不同——逗号是二维列表转字典时自动完成的键值分隔,而空格是对字符串内容的替换,只需在转字典时逐个处理元素:
- 替换值中的空格:
col_mapping_with_underscores = {key: value.replace(' ', '_') for key, value in original_list}
结果为:
{'ASAP': 'As_soon_as_possible', 'AM': 'Before_Midday', 'PM': 'After_Midday', 'DOB': 'Date_of_Birth'}
- 替换键中的空格(如果存在):
col_mapping_key_underscores = {key.replace(' ', '_'): value for key, value in original_list}
3. 生成指定格式的字符串(若确实需要)
如果一定要得到类似'ASAP': 'As soon as possible', ...的字符串,直接将字典转为字符串后去掉首尾大括号即可:
mapping_str = str(col_mapping)[1:-1]
得到的结果就是:
'ASAP': 'As soon as possible', 'AM': 'Before Midday', 'PM': 'After Midday', 'DOB': 'Date of Birth'
为什么之前的方法没成功?
直接操作整个列表的字符串表示(比如用.replace()或.join())会混淆子列表内部的逗号和元素间的逗号,破坏结构。正确思路是先处理每个键值对,再组合成字典,而非直接修改字符串。
内容的提问来源于stack exchange,提问作者Raihan Choudhury
相关产品推荐
相关产品推荐

