pandas dataframe调用to_string()输出列对齐及表头居中调整问题
pandas DataFrame 格式化输出方案
实现思路
- 先将DataFrame中的空值替换为和有效值长度一致的空白占位符,避免空值导致列宽收缩错位
- 统一设置每列的固定宽度,表头设置为居中对齐,数据行保持左对齐即可实现目标效果
代码实现
方案1:pandas原生参数实现(代码更简洁)
import pandas as pd # 替换空值为5个空格,匹配时间字符串"HH:MM"的长度 df_filled = df.fillna(' ') # 直接调用to_string生成格式化字符串 formatted_str = df_filled.to_string( col_space=6, # 每列固定宽度为6个字符,可根据需要调整大小改变列间距 index=False, # 关闭输出行索引 justify='center' # 表头居中对齐 )
方案2:手动格式化(自由度更高,可自定义对齐规则)
import pandas as pd # 替换空值 df_filled = df.fillna(' ') # 处理表头:每个列名居中对齐到6字符宽度 header = ''.join([col.center(6) for col in df_filled.columns]) # 处理数据行:每个值左对齐到6字符宽度 rows = [] for _, row in df_filled.iterrows(): rows.append(''.join([str(v).ljust(6) for v in row])) # 拼接最终结果 formatted_str = header + '\n' + '\n'.join(rows)
最终使用
将生成的formatted_str作为代码块内容通过请求发送到Telegram,Telegram的等宽代码块会自动保留对齐效果。
内容的提问来源于stack exchange,提问作者minmax
相关产品推荐
相关产品推荐

