使用不同的来源,条件和循环来构建熊猫数据框

时间:2019-06-13 11:19:35

标签: python pandas dataframe

大家好,我有一个很长的难题要解决,所以请耐心等待。

我正在尝试通过多个交易所建立df的股价和交易量。我的一些股票在多个交易所中上市,因此我要做的是从该交易所获得交易量最大的交易所的价格数据,然后取不同交易所的平均交易量。让我们先来看df

exchange_df1=

Date                Sk_A_px Sk_A_vo Sk_B_px Sk_B_vo Sk_C_px Sk_C_vo
09/06/2019 08:00    0.83    9761    1.61    514     5.02    75
09/06/2019 09:00    0.83    15391   1.60    186     5.01    93
09/06/2019 10:00    0.83    18233   1.60    524     4.99    111
09/06/2019 11:00    0.83    21900   1.59    498     4.96    262
09/06/2019 12:00    0.83    8085    1.59    119     4.98    203
09/06/2019 13:00    0.81    42728   1.54    1472    4.89    405
09/06/2019 14:00    0.81    26971   1.53    1032    4.91    231
09/06/2019 15:00    0.81    40405   1.53    739     4.92    173
09/06/2019 16:00    0.80    42562   1.52    448     4.87    412
09/06/2019 17:00    0.79    270292  1.50    2091    4.81    1584

exchange_df2=

Date                Sk_B_px Sk_B_vo Sk_C_px Sk_C_vo Sk_D_px Sk_D_vo
09/06/2019 08:00    1.63    5657    5.05    785     0.46    9045
09/06/2019 09:00    1.59    2044    5.04    974     0.46    15541
09/06/2019 10:00    1.61    5761    5.02    1168    0.46    22781
09/06/2019 11:00    1.57    5476    4.99    2751    0.46    59322
09/06/2019 12:00    1.60    1309    5.01    2128    0.46    18349
09/06/2019 13:00    1.56    16195   4.92    4256    0.45    59217
09/06/2019 14:00    1.51    11347   4.94    2430    0.44    103682
09/06/2019 15:00    1.54    8133    4.95    1821    0.45    46086
09/06/2019 16:00    1.55    4928    4.90    4330    0.44    39859
09/06/2019 17:00    1.51    22997   4.84    16628   0.42    134984

exchange_df3=

Date                Sk_B_px Sk_B_vo Sk_E_px Sk_E_vo Sk_F_px Sk_F_vo
09/06/2019 08:00    1.60    5714    1.00    13088   6.40    13687
09/06/2019 09:00    1.56    2064    1.00    20380   6.40    18542
09/06/2019 10:00    1.58    5819    1.00    8264    6.31    10203
09/06/2019 11:00    1.54    5531    1.00    12218   6.28    4709
09/06/2019 12:00    1.57    1322    1.00    6477    6.22    2110
09/06/2019 13:00    1.53    16358   0.98    28151   6.02    10006
09/06/2019 14:00    1.48    11461   0.96    30669   5.95    4546
09/06/2019 15:00    1.51    8214    0.96    11420   6.01    4618
09/06/2019 16:00    1.52    4977    0.96    13484   6.04    5477
09/06/2019 17:00    1.48    23229   0.94    23952   5.78    5949

所以我的stocks列表就是这样; stocks = ['Sk_A', 'Sk_B', 'Sk_C', 'Sk_D', 'Sk_E', 'Sk_F'],每只股票都有一个_px(价格)和_vo(数量)列。

然后,我希望通过遍历此股票列表来构建total_df,然后尝试进行以下操作。

首先,我需要检查股票是否在1个或超过1个交易所上市。如果仅仅是一个,那么我需要确定哪个交易所,然后将价格和成交量数据添加到total_df中。对于我们的第一批股票Sk_A

它只列出了一个exchange_df1,所以我只想做total_df = total_df.merge(exchange_df1[['Date', stock + '_px', 'stock + _vo']], on='Date', how='left')或类似的事情。

下一步是我真的迷路了。 Sk_B在所有3个交易所中列出。总交易量最大的交易所是exchange_df3,因此我想确定这一点,然后将Sk_B_px的交易所价格数据添加到我们的total_df中。然后,我想对所有三个交易所的交易量取平均值。并将其用作total_df中的音量列。

以类似的方式,您会注意到Sk_Cexchange_df1上同时列出了exchange_df2,其中exchange_df2是较高的总交易量,在这种情况下,我想以此价格数据作为我们的总df,然后再次将两个交易所的交易量平均。

不幸的是,屏幕不够宽,无法容纳我想要df的完整示例,但是我已经为A,B和C完成了此操作,我认为这对于作为A,B的示例来说是完美的和C代表我目前发现自己的不同情况。

Date                Sk_A_px Sk_A_vo Sk_B_px Sk_B_vo Sk_C_px Sk_C_vo
09/06/2019 08:00    0.83    9761    1.60    3962    5.05    430
09/06/2019 09:00    0.83    15391   1.56    1431    5.04    533
09/06/2019 10:00    0.83    18233   1.58    4035    5.02    639
09/06/2019 11:00    0.83    21900   1.54    3835    4.99    1507
09/06/2019 12:00    0.83    8085    1.57    917     5.01    1165
09/06/2019 13:00    0.81    42728   1.53    11342   4.92    2331
09/06/2019 14:00    0.81    26971   1.48    7946    4.94    1331
09/06/2019 15:00    0.81    40405   1.51    5695    4.95    997
09/06/2019 16:00    0.80    42562   1.52    3451    4.90    2371
09/06/2019 17:00    0.79    270292  1.48    16106   4.84    9106

任何帮助将不胜感激,欢呼

0 个答案:

没有答案