假設以下代碼:
import numpy as np
import pandas as pd
df = pd.DataFrame({'A': np.random.randint(0, 10, 10)})
df['B'] = df['A'].diff()
x, x_diff = 1, df['B'].iloc[1:]
df['C'] = np.r_[x, x_diff].cumsum()
A B C
# 0 6 NaN 1.0
# 1 6 0.0 1.0
# 2 0 -6.0 -5.0
# 3 7 7.0 2.0
# 4 5 -2.0 0.0
# 5 3 -2.0 -2.0
# 6 3 0.0 -2.0
# 7 8 5.0 3.0
# 8 8 0.0 3.0
# 9 8 0.0 3.0
正如預期的那樣,C 列正在發生美妙的變化。這似乎沒有問題。但是,當我使用十進制數時,它們會四舍五入為 0,最終我的起始值根本沒有改變。任何想法如何防止這種情況?理論上我可以再次乘以數字,但有沒有更好的方法來解決這個問題?問題如下所示:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': np.random.randint(0, 10, 10)})/100000000000000
df['B'] = df['A'].diff()
x, x_diff = 1, df['B'].iloc[1:]
df['C'] = np.r_[x, x_diff].cumsum()
# A B C
# 0 9.000000e-14 NaN 1.0
# 1 7.000000e-14 -2.000000e-14 1.0
# 2 1.000000e-14 -6.000000e-14 1.0
# 3 9.000000e-14 8.000000e-14 1.0
# 4 9.000000e-14 0.000000e 00 1.0
# 5 4.000000e-14 -5.000000e-14 1.0
# 6 6.000000e-14 2.000000e-14 1.0
# 7 9.000000e-14 3.000000e-14 1.0
# 8 7.000000e-14 -2.000000e-14 1.0
# 9 0.000000e 00 -7.000000e-14 1.0
uj5u.com熱心網友回復:
感謝您的許多建議。使用 0 作為 PUFF 建議的起始值有效。pd.set_option('precision', 16)克里斯建議的方法也有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/393347.html
上一篇:無法解開一個numpy陣列
下一篇:谷歌街景黑屏
