有沒有辦法在 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,
)
最初將輸出為:
| 一個 | 乙 |
|---|---|
| 0.01 | 1.00E-07 |
| 0.02 | 2.00E-07 |
| 0.03 | 3.00E-07 |
而是成為我想要的輸出:
| 一個 | 乙 |
|---|---|
| 0.01 | 0.0000001 |
| 0.02 | 0.0000002 |
| 0.03 | 0.0000003 |
關于大熊貓.to_csv結果抑制科學記數法的許多問題已經被 問,但所有的答案涉及指定一個任意精度。
例如,設定float_format="%.7f"在df.to_csv部隊ALL浮點列和數字(也是如此7個顯著的數字round(7),當然)。
這將導致以下輸出,這是我不想要的:
| 一個 | 乙 |
|---|---|
| 0.0100000 | 0.0000001 |
| 0.0200000 | 0.0000002 |
| 0.0300000 | 0.0000003 |
(我也嘗試np.format_float_positional按照此處的建議使用,但沒有運氣。)
uj5u.com熱心網友回復:
np.format_float_positiona在系列上實作l。如果在 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 函式 讓我們試著把它放在 def 函式中
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/399314.html
下一篇:連續重復的熊貓分組
