我把熊猫写进txt文件包里。但是我需要.txt表中的列具有精确的11个字符的宽度(我需要这样做,因为.txt稍后由只读取固定宽度列的fortran程序读取)。我在pandas或tablete包中找不到设置表列宽度的选项。我读过pandas.set_option('display.max_colwidth',100)
,但这只设置了一个最大宽度,而不是一个固定宽度,它是为了显示,而不是为了将写入文件。在
有人知道设置宽度的选项吗?或者是另一个表格包,这样就可以了?在
根据@zipa的回答中的说明进行解决:
现在的输出确实是在宽度=11个字符的列中,但是在右边的第5列中,可以看到这被打乱了,因为float<;10e+11以十进制表示,而不是以指数/科学表示。这是由str(x)引起的
如图所示,从右数第5列:
C_2_ ,nan ,nan ,nan ,nan , C , C ,nan ,nan ,nan ,2.49e-08 ,0.0 ,71600 ,2 ,100 ,6.01e+11 ,-1.0 ,71600 ,2 ,100
CH ,nan ,nan ,nan ,nan , C , H ,nan ,nan ,nan ,3.16e-10 ,0.0 ,33700 ,2 ,100 ,7630000000.0,-1.0 ,33700 ,2 ,100
CN ,nan ,nan ,nan ,nan , C , N ,nan ,nan ,nan ,1e-09 ,0.0 ,71000 ,2 ,100 ,24200000000.0,0.0 ,71000 ,2 ,100
CO ,nan ,nan ,nan ,nan , C , O ,nan ,nan ,nan ,0.000152 ,-3.1 ,12900 ,2 ,100 ,3.67e+15 ,-4.1 ,12900 ,2 ,100
为了解决这个问题,我把“nan”变成了一个愚蠢的空间:
df.fillna(' ',inplace=True)
。接下来,我跟随@zipa后面的注释,修改了他建议的代码中的一行-我让lambda函数接受and if子句,并根据条目是string还是float有不同的行为:
这解决了我的问题!-见以下输出:
C2 , , , , , C , C , , , ,2.490e-08 ,0.000e+00 ,7.160e+04 ,2.000e+00 ,1.000e+02 ,6.010e+11 ,-1.000e+00 ,7.160e+04 ,2.000e+00 ,1.000e+02
CH , , , , , C , H , , , ,3.160e-10 ,0.000e+00 ,3.370e+04 ,2.000e+00 ,1.000e+02 ,7.630e+09 ,-1.000e+00 ,3.370e+04 ,2.000e+00 ,1.000e+02
CN , , , , , C , N , , , ,1.000e-09 ,0.000e+00 ,7.100e+04 ,2.000e+00 ,1.000e+02 ,2.420e+10 ,0.000e+00 ,7.100e+04 ,2.000e+00 ,1.000e+02
CO , , , , , C , O , , , ,1.520e-04 ,-3.100e+00 ,1.290e+04 ,2.000e+00 ,1.000e+02 ,3.670e+15 ,-4.100e+00 ,1.290e+04 ,2.000e+00 ,1.000e+02
好吧,这是你需要的吗,它可以把所有的东西都变成11个字符长的文本:
相关问题 更多 >
编程相关推荐