如何将Pandas DataFrame列类型转为指定格式的字典?
解决Pandas DataFrame类型字典格式化问题
问题场景
现有如下Pandas DataFrame:
A B C D 0 56 89 16 b 1 51 41 99 b 2 49 3 72 d 3 15 98 58 c 4 92 55 77 d
需要生成一个键为列名、值为字符串格式数据类型的字典。使用df.dtypes.to_dict()得到的结果包含dtype对象,不符合需求:
{'A': dtype('int64'), 'B': dtype('int64'), 'C': 'int64', 'D': dtype('O')}
期望得到的目标格式:
{'A': 'int64', 'B': 'int64', 'C': 'int64', 'D': 'object'}
解决方案
以下几种方法都可以实现需求:
方法1:字典推导式
遍历原字典的键值对,将每个dtype对象转换为字符串:
dtypes = {col: str(dtype) for col, dtype in df.dtypes.to_dict().items()}
方法2:利用astype(str)转换后转字典
直接对df.dtypes这个Series做字符串类型转换,再转为字典,代码更简洁:
dtypes = df.dtypes.astype(str).to_dict()
方法3:使用apply(str)转换
通过apply方法逐个将dtype转为字符串,再生成字典:
dtypes = df.dtypes.apply(str).to_dict()
以上三种方法最终都会输出符合要求的字符串格式类型字典,其中方法2和3的写法更高效简洁。
内容的提问来源于stack exchange,提问作者itthrill
相关产品推荐
相关产品推荐

