簡體   English   中英

用先前的值乘以常數填充 nan 值的列

[英]Fill columns of nan values with previous value multiplied by constant

我有一個 df,其中一些列以多個 nan 值結尾。 我想使用 fillna(method='ffill') 或類似的東西將每個 nan col 值與前一個值 * 來自另一個 df 的某個常量相乘。 但是,僅使用以下內容是行不通的。 在移動到下一個之前需要計算每個 col 值,這是問題嗎?

df_new = df.fillna(method='ffill') * constant 

有趣的問題。 這不是矢量化解決方案,但它可以逐列工作。

首先設置數據以進行測試 - 將索引設置為最新,因此我們不依賴索引號來提供幫助

A = [np.nan, np.nan, 5.5, 5.7, 5.9, 6.1, 6.0, 5.9, np.nan, np.nan, np.nan,15.0]

df = pd.DataFrame({'A': A}, index=pd.date_range(start='2010', periods=len(A), freq="QS"))

            A
2010-01-01  NaN
2010-04-01  NaN
2010-07-01  5.5
2010-10-01  5.7
2011-01-01  5.9
2011-04-01  6.1
2011-07-01  6.0
2011-10-01  5.9
2012-01-01  NaN
2012-04-01  NaN
2012-07-01  NaN
2012-10-01  15.0

接着

for id in df[df.A.isnull() == True].index:
    df.loc[id, 'A'] = 1.025 * df.A.shift().loc[id] 

            A
2010-01-01  NaN
2010-04-01  NaN
2010-07-01  5.500000
2010-10-01  5.700000
2011-01-01  5.900000
2011-04-01  6.100000
2011-07-01  6.000000
2011-10-01  5.900000
2012-01-01  6.047500
2012-04-01  6.198687
2012-07-01  6.353655
2012-10-01  15.000000

現在您需要遍歷要向前填充的列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM