Python用循环创建数据帧

时间:2018-05-15 09:25:18

标签: python pandas loops

我想从名单列表中创建编号数据框,如下所示:

tickers = [‘IBM US Equity’, ‘AAPL US Equity’]
for num, ticker in enumerate(tickers, start=1):
      df[num] = df.loc[ticker]
      print(df[num])

df是另一个pandas数据框,其中代码为索引。所以写出以下内容确实给了我想要的结果:

df1 = df.loc[‘IBM US Equity’]
print(df1)

然而,当尝试使用循环时,我收到一条错误消息: “错过的项目数量为4,展示位置意味着1”

我错过了什么?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

使用字典表示可变数量的变量:

tickers = ['IBM US Equity', 'AAPL US Equity']

df_dict = {}

for num, ticker in enumerate(tickers, start=1):
      df_dict[num] = df.loc[ticker]

然后通过df_dict[1]等访问元素

制定逻辑的另一种方法是使用字典理解:

df_dict = {num: df.loc[ticker] for num, ticker in enumerate(tickers, 1)}

原因您的代码错误pandas正在尝试向系列添加数据框:df[num] = df.loc[ticker]的左侧是一个系列,而右侧是是一个数据帧。这是不可能的,并且,相当描述性地,pandas抱怨项目数量不正确。