我正在嘗試做一些在 excel 中非常簡單的事情,但我似乎無法找到在 python 中做這件事的方法。我想根據當前值 百分比計算資料框中的下一個值,類似于 excel 版本:


uj5u.com熱心網友回復:
您可以cumprod用于此類操作。添加一個shiftandfillna使第一個值保持不變:
df = pd.DataFrame({"Date": pd.date_range("1-1-1980", "1-12-1980", freq="D")})
df["Value"] = 105 # or df["Value].ffill() for your current df
df["mul"] = 1 1/12
df["Value"] *= df.pop("mul").cumprod().shift(1).fillna(1)
print (df)
Date Value
0 1980-01-01 105.000000
1 1980-01-02 113.750000
2 1980-01-03 123.229167
3 1980-01-04 133.498264
4 1980-01-05 144.623119
5 1980-01-06 156.675046
6 1980-01-07 169.731300
7 1980-01-08 183.875575
8 1980-01-09 199.198539
9 1980-01-10 215.798417
10 1980-01-11 233.781619
11 1980-01-12 253.263420
uj5u.com熱心網友回復:
我很驚訝在互聯網上沒有關于這樣一個問題的大量答案。不是最優雅的方式,但你可以這樣做:
我創建了一個小例子 df (未來:您應該從編輯器中復制資料并將其作為文本而不是圖片粘貼到您的問題中)
df = pd.DataFrame(
{"Date": [1, 2, 3, 4, 5], "Value": [105, np.nan, np.nan, np.nan, np.nan]}
)
df["factor"] = 1 1 / 12
print(df)
Date Value factor
0 1 105.0 1.083333
1 2 NaN 1.083333
2 3 NaN 1.083333
3 4 NaN 1.083333
4 5 NaN 1.083333
start_value = df["Value"][0]
df["Value"] = df["factor"].cumprod() * start_value
df = df.drop("factor", axis=1)
print(df)
Date Value
0 1 113.750000
1 2 123.229167
2 3 133.498264
3 4 144.623119
4 5 156.675046
uj5u.com熱心網友回復:
是的。
很簡單。
匯入 pandas 并在資料框中轉換您的 excel 后,您只需要多一步:
your_dataframe[new_column_name]=your_dataframe[value]*(1 1/12)
說“謝謝”是值得贊賞的,但這并不能回答問題。相反,請投票選出對您最有幫助的答案!如果這些答案對您有幫助,請考慮以更具建設性的方式表示感謝——通過對您的同行在這里提出的問題貢獻您自己的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/474496.html
