Python 如何截断小的浮点值
我使用pandas.DataFrame.round来截断数据帧上的列,但是我有一列p值,它们的值很小,被舍入为零。例如,下面的所有值都四舍五入为0Python 如何截断小的浮点值,python,pandas,Python,Pandas,我使用pandas.DataFrame.round来截断数据帧上的列,但是我有一列p值,它们的值很小,被舍入为零。例如,下面的所有值都四舍五入为0 p-value 2.298564e-17 6.848231e-91 1.089847e-10 9.390048e-04 5.628517e-35 4.621786e-19 4.601818e-54 9.639073e-19 我想要像这样的东西 p-value 2.29e-17 6.84e-91 1.08e-10
p-value
2.298564e-17
6.848231e-91
1.089847e-10
9.390048e-04
5.628517e-35
4.621786e-19
4.601818e-54
9.639073e-19
我想要像这样的东西
p-value
2.29e-17
6.84e-91
1.08e-10
9.39e-04
5.62e-35
4.62e-19
4.60e-54
9.63e-19
不完全截断,但相当圆:
df['p-value'].apply(lambda x: f'{x:.2e}')
输出:
0 2.30e-17
1 6.85e-91
2 1.09e-10
3 9.39e-04
4 5.63e-35
5 4.62e-19
6 4.60e-54
7 9.64e-19
Name: p-value, dtype: object
不完全截断,但相当圆:
df['p-value'].apply(lambda x: f'{x:.2e}')
输出:
0 2.30e-17
1 6.85e-91
2 1.09e-10
3 9.39e-04
4 5.63e-35
5 4.62e-19
6 4.60e-54
7 9.64e-19
Name: p-value, dtype: object
Numpy具有这方面的功能
data = """p-value
2.298564e-17
6.848231e-91
1.089847e-10
9.390048e-04
5.628517e-35
4.621786e-19
4.601818e-54
9.639073e-19"""
a = [x for x in data.split("\n")]
df = pd.DataFrame({"p-value":a[1:]})
df["p-value"] = df["p-value"].astype(np.float)
df["p-value"].apply(lambda x: np.format_float_scientific(x, precision=2))
输出
Numpy具有这方面的功能
data = """p-value
2.298564e-17
6.848231e-91
1.089847e-10
9.390048e-04
5.628517e-35
4.621786e-19
4.601818e-54
9.639073e-19"""
a = [x for x in data.split("\n")]
df = pd.DataFrame({"p-value":a[1:]})
df["p-value"] = df["p-value"].astype(np.float)
df["p-value"].apply(lambda x: np.format_float_scientific(x, precision=2))
输出