[英]Suppress scientific notation in Pandas *without* altering precision
有沒有辦法在 Panda 的輸出中抑制科學記數法而不強制所有列都具有特定的精度?
這樣一個數據框:
import pandas as pd
df = pd.DataFrame({"a": [0.01, 0.02, 0.03], "b": [0.0000001, 0.0000002, 0.0000003]})
df.to_csv(
"df.csv",
index=False,
)
最初將輸出為:
一個 | b |
---|---|
0.01 | 1.00E-07 |
0.02 | 2.00E-07 |
0.03 | 3.00E-07 |
而是變成了我想要的 output:
一個 | b |
---|---|
0.01 | 0.0000001 |
0.02 | 0.0000002 |
0.03 | 0.0000003 |
已經提出了許多關於在 Pandas'.to_csv 結果中抑制科學記數法的問題,但所有答案都涉及指定任意精度。
例如,在df.to_csv
中設置float_format="%.7f"
會強制所有浮點列和數字使用 7 個有效數字(當然, round(7)
也是如此)。
這將導致以下 output,這是我不想要的:
一個 | b |
---|---|
0.0100000 | 0.0000001 |
0.0200000 | 0.0000002 |
0.0300000 | 0.0000003 |
(我也嘗試按照這里的建議使用np.format_float_positional
,但沒有運氣。)
在系列上實施np.format_float_positiona
。 如果在 df 上完成,您將被迫進行迭代,這在計算上可能非常昂貴。
Pd系列
df['b'] =[(lambda x: np.format_float_positional(x))(x) for x in df['b']]
或者只是按照@user2357112 的建議支持莫妮卡
df['b'] =[np.format_float_positional(x) for x in df['b']]
Def function讓我們嘗試將其放入 def function
import numpy as np
def format_float(df):
cols=list(df.columns)
for col in cols:
df[col]=[np.format_float_positional(x) for x in df[col]]
return df
format_float(df)
結果
a b
0 0.01 0.0000001
1 0.02 0.0000002
2 0.03 0.0000003
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.