在混合类型 DF 列中将浮点数转换为字符串使用科学记数法

Converting Floats to String in Mixed Type DF Column Uses Scientific Notation

我有一个数据框,其中有一列正在以混合类型读入。

df = pd.DataFrame({'mix':['a',6,0.23423,False, 0.000023425]})

我想将该列转换为字符串,但是当我这样做时,任何长小数都被转换为科学记数法。如何将所有小数保留为十进制表示法?

df.astype(str)
    mix
0   a
1   6
2   0.23423
3   False
4   2.3425e-11

期望输出:

    mix
0   a
1   6
2   0.23423
3   False
4   0.000000000023425

可以使用numpy的format_float_positional函数,如下

import numpy as np

df = pd.DataFrame({'mix':['a',6,0.23423,False, 0.000000000023425]})

def custom_str(x):
    if isinstance(x, float):
        return np.format_float_positional(x)
    return str(x)

df['mix'].apply(custom_str)

输出:

0                    a
1                    6
2              0.23423
3                False
4    0.000000000023425