我有一个数据框,我需要使用不同列(id)中具有相同值的行中的值来填充一列(paid_date)中的缺失值。保证每个 id 值的paid_date 列中不超过 1 个非空值,并且非空值将始终位于空值之前。例如:
index id paid_date
6 25220 2017-01-05 00:00:00
9 30847 None
11 30847 None
14 29369 2017-06-21 00:00:00
17 31232 2017-08-31 00:00:00
20 26196 2017-02-20 00:00:00
21 26196 None
24 28303 2017-05-09 00:00:00
25 28303 None
如果存在具有匹配 id的行,如何替换列None
中的值?paid_date
paid_date
index id paid_date
6 25220 2017-01-05 00:00:00
9 30847 None
11 30847 None
14 29369 2017-06-21 00:00:00
17 31232 2017-08-31 00:00:00
20 26196 2017-02-20 00:00:00
21 26196 2017-02-20 00:00:00
24 28303 2017-05-09 00:00:00
25 28303 2017-05-09 00:00:00
我尝试使用fillna
将 id 映射到paid_dates 的字典,我尝试使用pd.Series.map
但都没有成功。
paid_dates = df[pd.notnull(df['paid_date'])]
pds = pd.Series(data=paid_dates['paid_date'].values, index=paid_dates['id'])
pds_dict = pds.to_dict()
# doesn't work
df['paid_date'].fillna(value=pds_dict)
# also doesn't work
df['paid_date'].map(pds_dict)