python - 合并来自多个数据框的特定列
问题描述
我在列表符号中创建了一个股票符号列表,并尝试通过雅虎获取每只股票的数据,并为每只股票制作包含每日股票价格的 csv 文件。
for ticker in symbol:
if not os.path.exists('F&OStocks/{}.csv'.format(ticker)):
df = web.DataReader(ticker+'.NS', 'yahoo', start, end)
df.reset_index(inplace=True)
df.set_index('Date', inplace=True)
df.to_csv('F&OStocks/{}.csv'.format(ticker))
else:
print('Already have {}'.format(ticker))
上面的代码工作得很好,我能够为每只股票制作 csv 文件。接下来,我试图通过从所有 csv 文件中读取数据来创建一个包含所有股票收盘价的新数据框。我使用下面的代码来做到这一点。
main_df = pd.DataFrame()
for ticker in symbol:
df = pd.read_csv('F&OStocks/{}.csv'.format(ticker))
df.set_index('Date', inplace=True)
df.rename(columns = {'Adj Cose': ticker}, inplace=True)
df.drop(['Open','High','Low','Close','Volume'], 1, inplace=True)
if main_df.empty:
main_df = df
else:
main_df.merge(df, how='outer')
print(main_df.head())
main_df.to_csv('F&Ostocks_joined_closes.csv')
我只在 main_df 上获得了第一家公司的收盘价,而只有头部收盘价(如下表所示)。每个 csv 文件中的所有列都相似。我也尝试过加入而不是合并,但它仍然无法正常工作。
日期 | 调整关闭 |
---|---|
2015-02-02 | 138.406876 |
2015-02-03 | 142.602432 |
2015-02-04 | 140.155045 |
2015-02-05 | 136.961731 |
2015-02-06 | 136.215836 |
解决方案
假设您的数据框中剩下的就是调整后的收盘价,在您删除其他列后,您可以将 df 转换为系列并在每个循环中将其分配给 main_df:
if not df.empty:
main_df[ticker] = pd.Series(df)
推荐阅读
- c# - 如何将 XML 转换为 CSV (C#)
- r - 有没有办法在不改变结果的情况下翻转 ggsurvplot 上的 y 轴刻度?
- sql-server - 如何从 T-SQL 中的所有数据库角色中删除用户
- python - UnboundLocalError 是什么意思?
- windows - 使用批处理的“findstr”问题
- javascript - 为 createDrawerNavigation 使用变量
- loops - 带有if条件的循环中的执行顺序
- lit-element - 如何优化同一元素的多个实例的渲染,具有相同的属性值
- r - 绘制逆相关
- kubernetes - 当集群中的特定 Pod 重新启动时,如何触发 kubernetes/openshift 作业重新启动?