我有一定數量的小數據框,其中包含給定庫存的日期和股票價格。 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