在pandas中追加值,其中value等于其他值

时间:2017-10-18 23:46:32

标签: python pandas date if-statement dataframe

我有两个数据框:

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 ? 谢谢!

1 个答案:

答案 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')