[英]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.