【问题标题】:Extract nested Dataframe in loop to new dataframe将循环中的嵌套数据框提取到新的数据框
【发布时间】:2020-04-03 02:12:07
【问题描述】:
import pandas_datareader as pdr
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

Tickers = ["XOM", "IBM", "COKE", "BA", "SPX"]
Start = '2010-01-01'
End = '2018-1-1'
Interval = "m"

d = {}
for i in Tickers:
    d[i] = pd.DataFrame(pdr.get_data_yahoo(i,start= Start, end=End, interval=Interval))

r = {}
for i in d:
    r[i] = pd.DataFrame(d[i].Close)
u_key = []
for i in Tickers:
    u_key.append(str(i) + "_Close")

for i in r:
    df = pd.DataFrame([i])
    df.columns = u_key

直到最后一个循环,一切都按预期工作。下面的代码是我尝试将每个数据帧的列合并到一个新的数据帧 df 中的尝试。但是,它不起作用。 :(

如果有更简单的方法可以达到同样的目的,请指出。

提前致谢!

【问题讨论】:

  • 在此示例中,在合并之前,每个数据帧中只有一列,如何处理数据帧包含许多列的情况,而我们只希望每个列都命名为“Cose”。提前致谢!
  • 你想要的输出是什么?
  • 你可以这样做:df = pd.DataFrame(pdr.get_data_yahoo(Tickers, start= Start, end=End, interval=Interval))
  • @tommy.carstensen 我想要的输出是一个数据框,其中包含五个代码中每个代码的关闭列,以便我可以对 5 个代码的任何组合进行回归
  • @tommy.carstensen 感谢您的帮助

标签: python loops dataframe dictionary merge


【解决方案1】:

试试这个,它避免了嵌套数据框的需要:

import pandas_datareader as pdr
import pandas as pd

Tickers = ["XOM", "IBM", "COKE", "BA", "SPX"]
Start = '2010-01-01'
End = '2018-1-1'
Interval = "m"


df = pd.DataFrame(pdr.get_data_yahoo(Tickers, start= Start, end=End, interval=Interval))

for i in df:
    if "Close" not in i:
        del df[i]

【讨论】:

    猜你喜欢
    • 2023-01-11
    • 2019-03-31
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2019-07-09
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多