我有一个非常大的脚本,大到这里发布,所以我希望有人可以帮助我而不发布整个脚本... 在我的脚本中,我有多个带有数字的列(列'AAAAA':'TTTTT'),我将这些数字除以一列中的数字('kmer_number')。输出将写入新列。 这是通过此命令
完成的df5d[['Column{}'.format(i) for i in range(2003, 2003+(2002-979)+1)]] = df5d.loc[:, 'AAAAA':'TTTTT'].div(df5d['kmer_number'], axis=0)
新列中的输出是带>的数字。 8位小数,我想将它们转换为科学通知
我的输出就像这样
Column2972 Column2973 Column2974
0.000755306 0.00025591 0.000305601
0.000783782 0.000265844 0.000433143
0 0 0
0.000817596 0.000281049 0.000309438
0.000819018 0.000262932 0.000386843
我尝试了以下命令
df5d[2003:3026] = df5d[2003:3026].map('{:.2e}'.format)
但这给出了错误
"Traceback (most recent call last):
File "pythonscript_v10.py", line 226, in <module>
df5d[2003:3026] = df5d[2003:3026].map('{:.2e}'.format)
File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 2360, in __getattr__
(type(self).__name__, name))
AttributeError: 'DataFrame' object has no attribute 'map'
答案 0 :(得分:1)
使用pd.set_option
>>d = pd.DataFrame(np.random.random((5,3)))
>>d
0 1 2
0 0.725952 0.048684 0.735873
1 0.188897 0.043040 0.250257
2 0.623823 0.887885 0.269239
3 0.764847 0.069001 0.155357
4 0.515004 0.858192 0.726932
>>pd.set_option('display.float_format', '{:.2E}'.format)
>>d
0 1 2
0 7.26E-01 4.87E-02 7.36E-01
1 1.89E-01 4.30E-02 2.50E-01
2 6.24E-01 8.88E-01 2.69E-01
3 7.65E-01 6.90E-02 1.55E-01
4 5.15E-01 8.58E-01 7.27E-01
修改强>
正如评论中所指出的,如果你只想在科学记数法中有一个特定的列(比如专栏0
):
>>d = pd.DataFrame(np.random.random((5,3)))
0 1 2
0 0.113197 0.352638 0.023745
1 0.261915 0.742125 0.196289
2 0.413795 0.665053 0.927284
3 0.380613 0.660596 0.141781
4 0.826938 0.672995 0.464685
>>d[0] = d[0].map('{:,.2E}'.format)
>>d
0 1 2
0 1.13E-01 0.352638 0.023745
1 2.62E-01 0.742125 0.196289
2 4.14E-01 0.665053 0.927284
3 3.81E-01 0.660596 0.141781
4 8.27E-01 0.672995 0.464685
编辑2:
对于数据框(以及数据框的一部分),请使用applymap
>>d = pd.DataFrame(np.random.random((5,3)))
>>d
0 1 2
0 0.526628 0.061561 0.536804
1 0.784187 0.372477 0.444849
2 0.438519 0.515741 0.858563
3 0.015711 0.728206 0.484090
4 0.855883 0.611769 0.460805
>>d = d.applymap('{:,.2E}'.format)
>>d
0 1 2
0 5.27E-01 6.16E-02 5.37E-01
1 7.84E-01 3.72E-01 4.45E-01
2 4.39E-01 5.16E-01 8.59E-01
3 1.57E-02 7.28E-01 4.84E-01
4 8.56E-01 6.12E-01 4.61E-01