我有一定数量的小数据框,其中包含给定库存的日期和股票价格。 Someone else向我展示了如何遍历它们,使它们包含在名为all_dfs的列表中。所以all_dfs[0]
将与日期和IBM美国股票,一个数据帧all_dfs[1]
将日期和MMM美国股票等(如下图所示的例子)。数据框中的日期列始终是相同的,但股票名称都不相同,并且与股票列关联的数字总是不同。所以,当你调用all_dfs[1]
这是你会看到数据帧(即all_dfs[1].head()
):将多个列添加到多个数据框
IDX Date MMM US equity
0 1/3/2000 47.19
1 1/4/2000 45.31
2 1/5/2000 46.63
3 1/6/2000 50.38
我想同其他列添加到每个数据帧。所以我试图通过它们循环并添加列。股票名称列中的数字是进行其他列计算的基础。
有更多的列加,但我认为他们将通过同样的方式SOC这一切环路列的示例中,我要添加:
Column 1 to add >>> df['P_CHG1D'] = df['Stock name #1'].pct_change(1) * 100
Column 2 to add >>> df['PCHG_SIG'] = P_CHG1D > 3
Column 3 to add>>> df['PCHG_SIG']= df['PCHG_SIG'].map({True:1,False:0})
这是代码,我到目前为止但它返回了all_dfs[i]
的语法错误。
for i in range (len(df.columns)):
for all_dfs[i]:
df['P_CHG1D'] = df.loc[:,0].pct_change(1) * 100
所以我也有2个问题,我想不出
我不知道如何将列添加到在循环中每dataframes。因此,我将有=后做类似的东西
all_dfs[i].['ADD COLUMN NAME'] = df['Stock Name 1'].pct_change(1) * 100
其中第二部分是
df['Stock Name 1']
这个不断变化的(所以在这个例子中它被称为MMM美国股票但下一次它会被称为列第二个数据帧的头 - 所以它可能是IBM美国股票),因为每个数据帧都有一个不同的名字,所以我不知道如何正确地调用,在循环
我是新来的Python /所以如果我想着这个错误的方式,让我知道是否有更好的解决方案。
这工作,但它确实如下 类型错误提供一个错误:不支持的操作数类型(一个或多个),用于/ :'str'和'float' 任何想法这意味着什么>>但即使错误的数据框编译与正确的信息。所以我不确定这是告诉我什么 –
是*股票*你的第三或第二列在每个DF?根据你发布的数据,我假设股票是第三栏。但是这表明,* Date *被用作分隔符'/'显示错误。也许一些dfs有*日期*作为第三栏?添加'print(i)'来查找列表中哪个df是问题。 – Parfait