0

我尝试根据日期合并两个 Pandas 数据框,然后填充NaN值直到特定日期。我有以下数据示例:

df_1:

日期 价值1
01/12 10
02/12 20
03/12 30
04/12 40
05/12 60
06/12 70
07/12 80

df_2:

日期 价值2
01/12 100
03/12 300
05/12 500

我使用以下行: df = pd.merge((df_1,df_2, how='left', on=['date']

我明白了:

日期 价值1 价值2
01/12 10 100
02/12 20
03/12 30 300
04/12 40
05/12 50 500
06/12 60
07/12 70

我想要实现的是将NaN值转发到df['value2']直到05/12而不是直到07/12

4

1 回答 1

2

首先,将日期转换为datetime格式以使用条件操作数。它将默认返回 YYYY-MM-DD。

接下来,为您的条件创建一个ffill掩码05/12。并loc用于fillna.

最后,datedatetimeback转换回string

df['date'] = pd.to_datetime(df["date"], format="%d/%m")
mask = (df["date"].lt(pd.to_datetime('05/12', format="%d/%m")))
df.loc[mask, "val2"] = df.loc[mask, "val2"].fillna(method="ffill")
df['date'] = df['date'].dt.strftime('%d/%m')
于 2021-09-21T08:37:20.700 回答