Python如何按行打印pandas DataFrame value_counts转字典及说明字符串
解决方案
方法1:使用json.dumps实现格式化输出(最推荐,和目标输出格式完全匹配)
你可以用Python内置的json模块的dumps方法,通过indent参数控制缩进换行,代码如下:
import json # 打印示例 print('Names and counts') print(json.dumps(df['names'].value_counts()[:3].to_dict(), indent=1, ensure_ascii=False)) print('\nLast names and counts') print(json.dumps(df['last names'].value_counts()[:3].to_dict(), indent=1, ensure_ascii=False)) print('\nStaff names and counts') print(json.dumps(df['staff_names'].value_counts()[:3].to_dict(), indent=1, ensure_ascii=False)) print('\nStaff last names and counts') print(json.dumps(df['staff last names'].value_counts()[:3].to_dict(), indent=1, ensure_ascii=False))
- 参数说明:
indent=1:控制每个层级的缩进为1个空格,刚好匹配你需要的输出效果ensure_ascii=False:如果后续有中文键值也能正常显示,不会转义成Unicode编码
方法2:正确使用pprint实现换行
你之前用pprint报错大概率是没有正确导入模块,或者没有设置宽度参数,正确用法如下:
from pprint import pprint print('Names and counts') # width设为1会强制每行只放一个键值对 pprint(df['names'].value_counts()[:3].to_dict(), width=1) # 其余字段打印逻辑同理,每个前面加对应的描述打印即可
方法3:手动遍历拼接(适合需要自定义格式的场景)
如果需要完全自定义每行的输出格式,可以手动遍历字典的键值对:
def print_dict(desc, data_dict): print(desc) print("{") total = len(data_dict) for idx, (k, v) in enumerate(data_dict.items()): end = ",\n" if idx != total -1 else "\n" print(f' "{k}": {v}', end=end) print("}") # 调用示例 print_dict('Names and counts', df['names'].value_counts()[:3].to_dict()) print() print_dict('Last names and counts', df['last names'].value_counts()[:3].to_dict()) # 其余字段同理调用即可
内容的提问来源于stack exchange,提问作者zara kolagar
相关产品推荐
相关产品推荐

