微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

存储在同一变量中的多个 DataFrame 的联合

如何解决存储在同一变量中的多个 DataFrame 的联合

我通过 MetaTrader 5 模块的循环导入了一些股票的信息。

import MetaTrader5 as mt5  
 
tickers = ['Apple','Amazon','Facebook','Microsoft'] 
results = {}

for ticker in tickers:
    results[ticker] = mt5.copy_rates_range(ticker,mt5.TIMEFRAME_M1,inicio,fin)
    results[ticker] = pd.DataFrame(results[ticker]).set_index('time')

数据已存储在结果 [ticker] 中。例如,当ticker = 'Apple'

results['Apple']

{'Apple':               open    high     low   close  tick_volume  spread  real_volume
 time                                                                        
 1606149300  117.33  117.55  117.31  117.47          126      12            0
 1606149360  117.48  117.54  117.31  117.39          134      12            0
 1606149420  117.38  117.54  117.36  117.41           95      12            0
 1606149480  117.43  117.47  117.32  117.33           90      12            0
 1606149540  117.32  117.33  117.24  117.26          123      12            0
 ...            ...     ...     ...     ...          ...     ...          ...

当股票代码 = '亚马逊'

results['Amazon']

open    high    low close   tick_volume spread  real_volume
time                            
1606149300  3114.25 3132.43 3114.25 3131.28 44  429 0
1606149360  3131.28 3133.25 3122.69 3131.52 83  450 0
1606149420  3131.52 3132.12 3122.69 3130.11 61  449 0
1606149480  3127.53 3135.92 3122.69 3127.05 80  448 0
1606149540  3129.77 3135.54 3123.50 3131.98 49  441 0
... ... ... ... ... ... ... ...

我的问题是如何将所有这些表合并到一个 DataFrame 中?例如,单个 DataFrame 中每个股票代码的“关闭”列,如下例所示

CLOSE       Apple Amazon Microsoft ETC...
time                            
1606149300  3114.25 3132.43 3114.25 
1606149360  3131.28 3133.25 3122.69 
1606149420  3131.52 3132.12 3122.69 
1606149480  3127.53 3135.92 3122.69 
1606149540  3129.77 3135.54 3123.50 
... ... ... ... ... ... ... ...

预先感谢您的帮助

解决方法

您可以尝试使用 Pandas 中的 join 功能。

merged_df = results[tickers[0]]
for t in tickers[1:]:
    merged_df = merged_df.merge(results[t][['close']],left_index=True,right_index=True)

希望它能解决您的问题!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。