首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Pandas创建多个DataFrames

用Pandas创建多个DataFrames
EN

Stack Overflow用户
提问于 2018-12-03 23:46:40
回答 1查看 1.7K关注 0票数 1

是否有一种方法可以使用“for循环”或类似的方法来在代码中运行,用我可以分配给不同变量的Pandas来创建多个DataFrames,而不是硬编码这两个DataFrames?

如果我添加新的代码,那么继续对它们进行硬编码是没有效率的。

代码语言:javascript
复制
import pandas_datareader as pdr
from datetime import datetime

Equity_Tickers = ["FB", "MSFT"]

start = datetime(2018, 9, 15)
end = datetime.today().date()

# First DataFrame 
data = pdr.DataReader(Equity_Tickers[0], 'yahoo', start, end)
df = data[['Adj Close']]

# Second DataFrame
data = pdr.DataReader(Equity_Tickers[1], 'yahoo', start, end)
df1 = data[['Adj Close']]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 00:30:04

当然,您可以使用一个变量,而不是硬编码代码:

代码语言:javascript
复制
ticker = Equity_Tickers[0]  # FB
data = pdr.DataReader(ticker, 'yahoo', start, end)

要创建一个循环,您可以执行如下操作:

代码语言:javascript
复制
for ticker in Equity_Tickers:
    data = pdr.DataReader(ticker, 'yahoo', start, end)
    df = data[['Adj Close']]

棘手的事情是在循环的每一次迭代中存储df变量,而不是覆盖它。一种解决方案是将每个DataFrame存储在列表或字典中。

代码语言:javascript
复制
frames = []
for ticker in Equity_Tickers:
    data = pdr.DataReader(ticker, 'yahoo', start, end)
    frames.append(data[['Adj Close']])

# eg, use frames[0] to access first ticker's DataFrame

代码语言:javascript
复制
frames = {}
for ticker in Equity_Tickers:
    data = pdr.DataReader(ticker, 'yahoo', start, end)
    frames[ticker] = data[['Adj Close']]

# eg, use frames['FB'] to access FB ticker's DataFrame

如果你真的很喜欢,你也可以用一个列表理解 /字典的理解来完成这一点:

代码语言:javascript
复制
# list comprehension
frames = [pdr.DataReader(t, 'yahoo', start, end)[['Adj Close']] for t in Equity_Tickers]

# dict comprehension
frames = {t: pdr.DataReader(t, 'yahoo', start, end)[['Adj Close']] for t in Equity_Tickers}

附加注意事项:您还可以考虑将框架组合成一个大的DataFrame,可能是一个整洁风格的DataFrame,其中"ticker“是每一行的一个字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53603670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档