簡體   English   中英

根據列從另一個數據框中填充 NaN

[英]Fill NaN from another adataframe based on a column

我有一個形狀為 (23251, 8) 的 dataframe 和另一個形狀為 (3652, 14) 的 dataframe。 第一個 dataframe 中的 DATE 列包含從 1955-01-01 到 2020-12-31 的日期,第二個中的 DATA 列包含從 2010-01-01 到 2019-12-31 的日期。的列包含很少或很多缺失值。 我想根據 DATE 從第二個 dataframe 中填充第一個數據幀中的缺失值(只要可能)(其中第二個 dataframe 中的 DATE 與第一個 Z6A8064B5DF4794550550 中的 DATE 匹配)

第一個 Dataframe:

在此處輸入圖像描述

第二個 Dataframe:

在此處輸入圖像描述

為了清楚起見,我想要,如果引用從 2010-01-01 到 2019-12-31 的日期的行(來自第一個數據幀)在 PRCP、TAVG、TMAX 和 TMIN 列中包含 NaN 以填充值從第二個 dataframe 基於每行中的日期與兩個數據幀之間匹配的標准。

沒有樣本作為純文本數據,很難為您提供幫助。 也許這應該工作:

COLS = ['TMIN', 'TMAX']
df1 = df1.fillna(df2.set_index('DATE').reindex(df1['DATE'])[COLS] \
         .reset_index(drop=True))
print(df1)

# Output
         DATE NAME  TMIN  TMAX
0  1955-01-01    L  28.0  40.0
1  1955-01-02    L  27.0  41.0
2  1955-01-03    L   NaN   NaN
3  1955-01-01    M  28.0  40.0
4  1955-01-02    M  27.0  41.0
5  1955-01-03    M   NaN   NaN

設置:

import pandas as pd
import numpy as np

d1 = {'DATE': ['1955-01-01', '1955-01-02', '1955-01-03',
               '1955-01-01', '1955-01-02', '1955-01-03'],
               'NAME': ['L', 'L', 'L', 'M', 'M', 'M'],
               'TMIN': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
               'TMAX': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]}
df1 = pd.DataFrame(d1)

d2 = {'DATE': ['1955-01-01', '1955-01-02'], 'TMIN': [28, 27], 'TMAX': [40, 41]}
df2 = pd.DataFrame(d2)

print(df1)
print(df2)

# Output
         DATE NAME  TMIN  TMAX
0  1955-01-01    L   NaN   NaN
1  1955-01-02    L   NaN   NaN
2  1955-01-03    L   NaN   NaN
3  1955-01-01    M   NaN   NaN
4  1955-01-02    M   NaN   NaN
5  1955-01-03    M   NaN   NaN


         DATE  TMIN  TMAX
0  1955-01-01    28    40
1  1955-01-02    27    41

暫無
暫無

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

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