[英]Python pandas: multiply 2 columns of 2 dataframes with different datetime index
I have 2 dataframes UsdBrlDSlice
and indexesM
.我有 2 个数据帧UsdBrlDSlice
和indexesM
。 The first is in daily basis, and has and index in yyyy-mm-dd
format, and the second is in monthly basis, and has an index in yyyy-mm
format.第一个是日基,有yyyy-mm-dd
格式的索引,第二个是月基,有yyyy-mm
格式的索引。
Example of UsdBrlDSlice
: 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
I need to insert a new column in UsdBrlDSlice
, multiplying it´s value USDBRL
with a specific column in indexesM['c']
, but matching the correct month of both indexes.我需要在UsdBrlDSlice
插入一个新列,将它的值USDBRL
与indexesM['c']
的特定列indexesM['c']
,但要匹配两个索引的正确月份。
Something like excel´s vlookup multiplication.类似于 excel 的 vlookup 乘法。 Thanks.谢谢。
我解决了 1) 在第一个数据框中创建一个新的ym
列,然后 2) 应用 map() 函数:
UsdBrlDSlice['y-m'] = UsdBrlDSlice.index.to_period('M')
UsdBrlDSlice['new col'] = UsdBrlDSlice['USDBRL'] * UsdBrlDSlice['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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.