我有两个数据框:
dfi = pd.read_csv('C:/Users/Mauricio/Desktop/inflation.csv')
dfm = pd.read_csv('C:/Users/Mauricio/Desktop/maturity.csv')
# equals the following
observation_date CPIAUCSL
0 1947-01-01 21.48
1 1947-02-01 21.62
2 1947-03-01 22.00
3 1947-04-01 22.00
4 1947-05-01 21.95
observation_date DGS10
0 1962-01-02 4.06
1 1962-01-03 4.03
2 1962-01-04 3.99
3 1962-01-05 4.02
4 1962-01-08 4.03
我创建了一个副本,因为df执行以下操作:
df = dfi.copy(deep=True)
返回dfi的精确副本, dfi 日期过去月, dfm 日期过去天 ,我想在df中创建一个新列,每次dfi中的日期= dfm中的日期,以在其中附加DGS10值。
到目前为止,我有这个:
for date in df.observation_date:
for date2 in dfm.observation_date:
if date==date2:
df['mat_rate'] = dfm['DGS10']
# this is what I get but dates do not match values
observation_date CPIAUCSL mat_rate
0 1947-01-01 21.48 4.06
1 1947-02-01 21.62 4.03
2 1947-03-01 22.00 3.99
3 1947-04-01 22.00 4.02
4 1947-05-01 21.95 4.03
它有效但不附加日期日期== date2 我该怎么做才能附加值,其中日期仅等于date2 ? 谢谢!
答案 0 :(得分:1)
如果日期格式不一致,请先转换它们:
dfi.observation_date = pd.to_datetime(dfi.observation_date, format='%Y-%m-%d')
dfm.observation_date = pd.to_datetime(dfm.observation_date, format='%Y-%m-%d')
现在,使用merge
:
df = dfi.merge(dfm, on='observation_date')