基于满足两个标准,我一直在寻找合并两个数据帧的高低。基本上我要做的是从一个数据框到我的主数据框中的vlookup,其中日期和股票代码符号匹配。
我的主数据框架的基本版本df1如下所示。它是2016年5月1日和2016年5月2日帐户中的股票代码。
Account_Num Date Symbol
0 1 2016-05-01 AAPL
1 1 2016-05-01 UA
2 1 2016-05-01 DIS
3 2 2016-05-01 CVX
4 2 2016-05-01 GOOGL
5 2 2016-05-01 PX
6 3 2016-05-01 MOS
7 3 2016-05-01 BLK
8 3 2016-05-01 TMO
9 1 2016-05-02 AAPL
10 1 2016-05-02 UA
11 1 2016-05-02 DIS
12 2 2016-05-02 CVX
13 2 2016-05-02 GOOGL
14 2 2016-05-02 PX
15 3 2016-05-02 MOS
16 3 2016-05-02 BLK
17 3 2016-05-02 TMO
我的第二个数据框df2保存了2016年5月1日和2016年5月2日上述账户中股票的价格,如下所示(制成价格):
Date Symbol Price
0 2016-05-01 AAPL 99.02
1 2016-05-02 AAPL 94.00
2 2016-05-01 UA 43.00
3 2016-05-02 UA 40.67
4 2016-05-01 DIS 67.88
5 2016-05-02 DIS 70.03
6 2016-05-01 CVX 22.00
7 2016-05-02 CVX 24.47
8 2016-05-01 GOOGL 85.52
9 2016-05-02 GOOGL 84.33
10 2016-05-01 PX 44.22
11 2016-05-02 PX 47.16
12 2016-05-01 MOS 23.77
13 2016-05-02 MOS 21.56
14 2016-05-01 BLK 38.48
15 2016-05-02 BLK 41.22
16 2016-05-01 TMO 67.43
17 2016-05-02 TMO 65.11
我最终想要的是df3,如下所示:
Account_Num Date Symbol Price
0 1 2016-05-01 AAPL 99.02
1 1 2016-05-01 UA 43.00
2 1 2016-05-01 DIS 67.88
3 2 2016-05-01 CVX 22.00
4 2 2016-05-01 GOOGL 85.52
5 2 2016-05-01 PX 44.22
6 3 2016-05-01 MOS 23.77
7 3 2016-05-01 BLK 38.48
8 3 2016-05-01 TMO 67.43
9 1 2016-05-02 AAPL 94.00
10 1 2016-05-02 UA 40.67
11 1 2016-05-02 DIS 70.03
12 2 2016-05-02 CVX 24.47
13 2 2016-05-02 GOOGL 84.33
14 2 2016-05-02 PX 47.16
15 3 2016-05-02 MOS 21.56
16 3 2016-05-02 BLK 41.22
17 3 2016-05-02 TMO 65.11
我看到的问题是两个数据帧的长度不同,我的df1有100,000行,而df2有23,000。因此,它不像是使用索引进行一对一匹配。上面的数据框架示例非常基础,因为在实际数据中,不同的账户比其他账户拥有更多的股票。所以我认为需要发生的是我需要遍历df1中的行并从日期和符号匹配的df2中引入价格。
我在Pandas中找到了相当于vlookup的示例,但它仅匹配一个标准,我在寻找匹配的日期和符号,然后在当天提取股票的价格。 / p>
如果有人知道有关如何执行此操作的信息或有任何建议,将非常感谢
谢谢, da4l
答案 0 :(得分:1)
非常感谢来自@Merlin的提示,我能够通过以下方式做我需要的事情:
#cretaed a new column in both data-frames concatenating the Date and Symbol variables called 'DateSym'
df1['DateSym'] = df1['Date'].map(str) + df1['Symbol']
df1
df2['DateSym'] = df1['Date'].map(str) + df1['Symbol']
df1
#then created df3 by merging the two data-frames using 'DateSym' as the index after rearranging so both data-frames had the new 'DateSym' column on the left
df3 = df1.merge(df2, on='DateSym', how='left')
df3
答案 1 :(得分:0)
也许这就是你想要的:
<?php
function encrypt ($key,$iv,$str)
{
$block=mcrypt_get_block_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$padding=$block-(strlen($str) % $block);
$str.=str_repeat(chr($padding), $padding);
$encryptxt=mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$str,MCRYPT_MODE_CBC,$iv);
$encryptxt64=base64_encode($encryptxt);
return $encryptxt64;
}
function decrypt ($key,$iv,$str)
{
$block=mcrypt_get_block_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$padding=$block-(strlen($str) % $block);
$str.=str_repeat(chr($padding), $padding);
$decryptxt=mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key,$str,MCRYPT_MODE_CBC,$iv);
$decryptxt64=base64_decode($decryptxt);
return $decryptxt64;
}
echo encrypt("1234567890123456","12345678901234561234567890123456","test")."\n<br/>";
echo decrypt("1234567890123456","12345678901234561234567890123456","xHqKvRQ6FXehOGGMrKoek04146M2l9bv1ScP6C1qCyg=")."\n<br/>";
?>