我有2个具有不同Datetime索引的数据帧,因此行的长度不同,而列的长度相等:
我想将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