簡體   English   中英

Python Pandas DF 按索引將 NaN 替換為其他 DF 的值

[英]Python Pandas DF Replace NaN with value from other DF by Index

我有兩個數據框,其中索引可以設置為 ['Date', 'Name']。 我現在想用可以在第二個中找到的 Data 替換所有常見列的第一個 Dataframe 中的 NaN(列中也可以有 NaN 值)。 它們看起來像這樣:

NaN = np.nan
df1 = pd.DataFrame([
    ['2020-01-01', 'Foo1', 8, 0.999],
    ['2020-01-01', 'Bar1', NaN, NaN],
    ['2020-01-02', 'Foo1', 1, 0.564],
    ['2020-01-03', 'Foo1', NaN, NaN]],
    columns=['Date', 'Name', 'Val1', 'Val2'])

df2 = pd.DataFrame([
    ['2020-01-01', 'Foo1', 8, 0.999],
    ['2020-01-01', 'Bar1', 5, 0.6],
    ['2020-01-02', 'Foo1', 1, 0.564],
    ['2020-01-03', 'Foo1', NaN, NaN]],
    columns=['Date', 'Name', 'Val1', 'Val2'])

我試圖用 where 和 replace 語句來做,但不幸的是我無法弄清楚,也找不到任何對這里有幫助的東西。 提前非常感謝!

嘗試使用combine_firstfillna

df1 = df1.set_index(['Date','Name']).combine_first(df2.set_index(['Date','Name'])).reset_index()
df1
         Date  Name  Val1   Val2
0  2020-01-01  Foo1   8.0  0.999
1  2020-01-01  Bar1   5.0  0.600
2  2020-01-02  Foo1   1.0  0.564
3  2020-01-03  Foo1   NaN    NaN

df1 = df1.set_index(['Date','Name']).fillna(df2.set_index(['Date','Name'])).reset_index()

暫無
暫無

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

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