python - python pandas数组合并
问题描述
我想合并从 pandas web datareader 收集的有关股票的数据。这是我的代码:
ntes = web.DataReader('ntes', 'morningstar', '5-5-2015', '7-27-2018')
print(type(ntes))
spx = web.DataReader('spx', 'morningstar', '5-5-2015', '7-27-2018')
ntes.rename(columns={'Close': 'CloseNTES'}, inplace=True)
spx.rename(columns={'Close': 'CloseSPX'}, inplace=True)
ntes=ntes['CloseNTES']
spx=spx['CloseSPX']
print( ntes.head())
print(spx.head())
df1=pd.concat([ntes, spx], axis=1, ignore_index=False)
print(df1.head())
我得到了一个数组,但首先获取关于一只股票的值,然后从另一只股票中获取值,这样一行中的两只股票都没有值。这是打印的内容。
Symbol Date
ntes 2015-05-05 125.295
2015-05-06 123.300
2015-05-07 127.500
2015-05-08 129.230
2015-05-11 128.890
Name: CloseNTES, dtype: float64
Symbol Date
spx 2015-05-05 2089.4601
2015-05-06 2080.1450
2015-05-07 2087.9973
2015-05-08 2116.0951
2015-05-11 2105.3275
Name: CloseSPX, dtype: float64
CloseNTES CloseSPX
Symbol Date
ntes 2015-05-05 125.295 NaN
2015-05-06 123.300 NaN
2015-05-07 127.500 NaN
2015-05-08 129.230 NaN
2015-05-11 128.890 NaN
解决方案
数据帧具有不同的多索引(第一个数据帧的第一级是“spx”,第二个数据帧是“ntes”)。为了使它们兼容,将多索引的“符号”级别转换为列,然后连接:
pd.concat([df.reset_index(level=0), df1.reset_index(level=0)],axis=1)
# Symbol CloseNTES Symbol CloseSPX
#Date
#2015-05-05 ntes 125.295 spx 2089.4601
#2015-05-06 ntes 123.300 spx 2080.1450
#2015-05-07 ntes 127.500 spx 2087.9973
#2015-05-08 ntes 129.230 spx 2116.0951
#2015-05-11 ntes 128.890 spx 2105.3275
推荐阅读
- vaadin - Vaadin Flow 14 如何设置 HttpOnly cookie 标志
- flutter - 使用 http 调用 Flutter API
- node.js - 如何通过 npm 包 msnodesqlv8 在过程调用中附加输出参数
- javascript - 多选标签以在纯 JavaScript 中过滤卡片或图像
- node.js - 如何在猫鼬中返回与一个特定键值相关的多个值?
- android - AnimatedVisibility 和 SwipeToDismiss Enter 动画不会触发 - Jetpack Compose
- php - 从 PHP 发送时未收到 APNS 推送通知。我该如何调试这个问题?
- sql-server - 当我尝试执行包时,SQL Server 中的集成服务评估期已过期
- macos - SwiftUI 和 macOS:如何检测关闭的最后一个窗口并显示应用程序将退出的警报
- html - 在 div 中放置按钮