以下代码显示:
a=pd.DataFrame({'element':['C','H','H','H'], 'x':[-2.55,-2.19,-2.19,-3.62], 'y':[ 0.6328,-0.3759, 1.1372, 0.6328], 'z':[ 0.00, 0.00,-0.87, 0.00]})
a
element x y z
0 C -2.55 0.6328 0.00
1 H -2.19 -0.3759 0.00
2 H -2.19 1.1372 -0.87
3 H -3.62 0.6328 0.00
b=a.to_string(formatters={'element': ' {:20s}'.format,'x': ' {:.8f}'.format,'y': ' {:.8f}'.format, 'z': ' {:.8f}'.format}, header=False,index=False))
输出是:
print(b)
C -2.55000000 0.63280000 0.00000000
H -2.19000000 -0.37590000 0.00000000
H -2.19000000 1.13720000 -0.87000000
H -3.62000000 0.63280000 0.00000000
那么为什么第一行没有空白。我想在第一列中添加一个空白列,如下所示:
print(' '+b)
C -2.55000000 0.63280000 0.00000000
H -2.19000000 -0.37590000 0.00000000
H -2.19000000 1.13720000 -0.87000000
H -3.62000000 0.63280000 0.00000000
或
fl=open('zzz')
fl.writelines(' ')
fl.write(b)
编码很奇怪。
PS :fomatters字符串中冒号和逗号的含义是什么?我正在学习链接Format certain floating dataframe columns into percentage in pandas
是否有任何手册教授如何编写fomatters字符串
Additon :我的问题部分解决了问题:Using formatters to make string from dataframe,我的问题更侧重于为什么第一行忽略格式化程序中的空白。