Python:使用不同的datetime索引将2个数据帧的2列相乘
我有两个数据帧Python:使用不同的datetime索引将2个数据帧的2列相乘,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧UsdBrlDSlice和indexesM。第一种为每日,索引为yyyy-mm-dd格式,第二种为每月,索引为yyy-mm格式 UsdBrlDSlice示例: USDBRL date 1994-01-03 331.2200 1994-01-04 336.4900 1994-01-05 341.8300 1994-01-06 347.2350 1994-01-07 352.7300 ...
UsdBrlDSlice
和indexesM
。第一种为每日,索引为yyyy-mm-dd
格式,第二种为每月,索引为yyy-mm
格式
UsdBrlDSlice
示例:
USDBRL
date
1994-01-03 331.2200
1994-01-04 336.4900
1994-01-05 341.8300
1994-01-06 347.2350
1994-01-07 352.7300
...
2020-10-05 5.6299
2020-10-06 5.5205
2020-10-07 5.6018
2020-10-08 5.6200
2020-10-09 5.5393
我需要在UsdBrlDSlice
中插入一个新列,将其值USDBRL
乘以indexem['c']
中的特定列,但要匹配两个索引的正确月份
类似于excel的vlookup乘法。谢谢。我解决了1)在第一个数据帧中创建一个新的y-m
列,然后2)应用map()函数:
UsdBrlDSlice['y-m']=UsdBrlDSlice.index.to\u期间('m')
usdbrldsicle['new col']=usdbrldsicle['USDBRL']*usdbrldsicle['y-m'].map(indexesM.set_index(indexesM.index)['c'])
请考虑对代码添加一些解释。
UsdBrlDSliceTmp = UsdBrlDSlice.copy()
UsdBrlDSliceTmp['date_col'] = UsdBrlDSliceTmp.index.values
indexesMTmp = indexesM.copy()
indexesMTmp['date_col'] = indexesMTmp.index.values
UsdBrlDSliceTmp['month'] = UsdBrlDSliceTmp['date_col'].apply(lambda x: x.month)
indexesMTmp['month'] = indexesMTmp['date_col'].apply(lambda x: x.month)
UsdBrlDSliceTmp = UsdBrlDSliceTmp.merge(indexesMTmp, on='month', how='left')
UsdBrlDSliceTmp['target'] = UsdBrlDSliceTmp['USDBRL']*UsdBrlDSliceTmp['c']
UsdBrlDSlice['new_col'] = UsdBrlDSliceTmp['target']