簡體   English   中英

根據條件用另一個 df 的值填充 nan

[英]Fill nan with values from another df based on a condition

我有一個看起來像這樣的df

df1:

    Quantity     Date      Open
0       NaN    2006-01-16   NaN
1     -20.0    2006-01-17   NaN
2     -20.0    2006-01-18   NaN
3       NaN    2006-01-19   NaN
4      20.0    2006-01-20   NaN
.        .         .         .
.        .         .         .
.        .         .         .

和另一個看起來像這樣的 dataframe

df2
          Date       Open     Quantity
0    2006-01-16     4567.00     -20.0
1    2006-01-19     4506.00      20.0
2    2006-01-25     4495.05     -20.0
3    2006-01-27     4609.80      20.0
4    2006-02-01     4574.05     -20.0   

我想要做的是合並 ['Quantity','Open'] 列上的 df1 和 df2,因為它只合並 df1.Quantity 為 NaN 的行。 因此,df1 應該是這樣的

df1:

    Quantity     Date      Open
0     -20.0    2006-01-16   4567.00
1     -20.0    2006-01-17   NaN
2     -20.0    2006-01-18   NaN
3      20.0    2006-01-19   4506.00
4      20.0    2006-01-20   NaN

我嘗試的是這段代碼df1.Open = df1.loc[df1['Quantity'].isna(), 'Open'].fillna(df2.EntryPrice) 我嘗試了這個,因為我確定 df2 中的日期包含在 df1 中的日期中並且在 df1.Quantity 中有 NaN 值。但是當我運行它時,這就是結果

      Quantity       Date    Open
0          -20 2006-01-16  4567.0
1        -20.0 2006-01-17     NaN
2        -20.0 2006-01-18     NaN
3           20 2006-01-19  4609.8
4         20.0 2006-01-20     NaN
...        ...        ...     ...
3317     -20.0 2017-05-23     NaN
3318       NaN 2017-05-23     NaN
3319      20.0 2017-05-24     NaN
3320      20.0 2017-05-25     NaN
3321      20.0 2017-05-26     NaN

如您所見,在第 3318 行,Quantity 和 Open 列中的 NaN 值仍未填充。 有人能幫我嗎

在兩個DataFrame中創建DatetimeIndex ,然后在Open中替換缺失值,僅用於過濾的行,然后Quantity所有缺失的行:

df1 = df1.set_index('Date')
df2 = df2.set_index('Date')
mask = df1['Quantity'].isna()

df1.Open = df1.loc[mask, 'Open'].fillna(df2.Open)
df1.Quantity = df1['Quantity'].fillna(df2.Quantity)
df1 = df1.reset_index()
print (df1)
         Date  Quantity    Open
0  2006-01-16     -20.0  4567.0
1  2006-01-17     -20.0     NaN
2  2006-01-18     -20.0     NaN
3  2006-01-19      20.0  4506.0
4  2006-01-20      20.0     NaN

暫無
暫無

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

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