使用格式化程序从数据帧中生成字符串

时间:2017-06-28 04:32:33

标签: python pandas

我正在从数据框中写一个字符串。我希望它尊重formatters,但我不想要字符串中的标题。我怎样才能得到这两样东西:没有标题,是格式化?

import pandas
df = pandas.DataFrame({'c': 1, 'd': 2.3}, index=[0], )
formats = {'c': '{: 10d}', 'd': '{: 2.5f}'}
formatters = {k: v.format for k, v in formats.items()}
df.to_string(formatters=formatters, index=False, header=True)

u'c        d\n        1  2.30000'


df.to_string(formatters=formatters, index=False, header=False)

'1  2.30000'

我相信预期的结果是这样的?:

'         1  2.30000'

2 个答案:

答案 0 :(得分:1)

[免责声明:我从未听说过DataFrame]

这对我来说只是DataFrame中的一个错误。尝试向开发人员报告错误。

作为一种解决方法,看起来您可以从字符串中删除第一行:

raw = df.to_string(formatters=formatters, index=False, header=True)
without_headers = '\n'.join(foo.splitlines()[1:])

答案 1 :(得分:0)

您可以制作第二个DataFrame,其中包含正确格式化的所有内容

df2 = pd.DataFrame()
for col_name, col in df.iteritems():
    df2[col_name] = col.apply(lambda x: formats[col_name].format(x))

然后将所有内容连接在一起

  

print(''。join(''。join(i [1:])for d in df2.itertuples()))

'           1   2.30000'