将两个数据框的值与不同的Datetime索引相乘

时间:2020-04-09 09:58:20

标签: python pandas dataframe datetime multiplication

我有2个具有不同Datetime索引的数据帧,因此行的长度不同,而列的长度相等:

  • 每月数据帧df1。代表重量。
  • 每日数据框df2。代表退货。

我想将df1的1985年1月的值与df2的1985年2月的所有值相乘,依此类推,直到每一列的数据帧结束(即2020年1月)。我的想法是,这将根据上一时期的权重得出“加权收益”。

我尝试通过在匹配年度和月度索引时使用for循环来实现此目的,但这会导致nan值。

function onEdit(e) {
  var ss= SpreadsheetApp.getActiveSpreadsheet();
  var range = e.range;
  if(range.getColumn()== 9 && range.getValue()=="Yes")
  {
    
    var celladdress = 'E'+ range.getRow(); 
    var emailid= ss.getRange(celladdress).getValue();
    
    var sub = 'Credentials-reg';
    var uname = ss.getRange('G'+ range.getRow()).getValue();
    var pass = ss.getRange('H'+ range.getRow()).getValue();
    var b = "Your details are as follows: \n Username :" +uname+ "\n Password : "+pass+ "\nThis is for your information please. \nThanks and Regards";

    GmailApp.sendEmail(emailid, sub, b);
  }
  
}

我尝试了不同的if语句。我还尝试过创建一个数据框,其中的每日索引填充有权重,在返回索引的行和列中的长度相等。通过这样做,我可以使用.mul(),因为数据帧的长度相等。

但是,我无法解决,希望你们中的一个能帮助我。

下面,我写了一个示例,说明了两个数据框的外观以及所需的结果。我希望有人可以帮助我解决这个问题。预先谢谢你!

for date in df1.index.tolist():   
    df2.loc[(df2.index.year == date.year) & (df2.index.month == date.month)] *= df1 

0 个答案:

没有答案