追加值大熊猫其中值等于其它值
我有两个数据帧:追加值大熊猫其中值等于其它值
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的我能做些什么,因此追加其中date等于DATE2仅值的日期? 谢谢!
如果日期格式不一致,首先将它们转换:
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')
太棒了!做了这项工作,你有一个小错误:dfm.observation_date = pd.to_datetime(dfm.observation_date,format ='%Y-%d-%m')应该是:dfm.observation_date = pd.to_datetime(dfm.observation_date ,format ='%Y-%m-%d')以防其他人想要将此作为解决方案 – MAUCA
@MauricioCastaneda我认为'dfi'和'dfm'的日期格式不同吗?你说'dfi'从一天开始,'dfm'从这个月开始。还是他们是一样的? –
@COLDSPEED他们是相同的,我的意思是,每月记录dfi,dfm每天记录,但都是相同的%y-%m-%d格式 – MAUCA
呃,这些日期是不相等的,虽然,你怎么还在组合行? –
@cᴏʟᴅsᴘᴇᴇᴅ这些只是前4个日期,整个数据集是14000个条目,这就是为什么它找到该日期== date2在循环的某个点 – MAUCA