2017-01-01 34 views
0

私は、特定の株式の日付と株価でいくつかの小さなデータフレーム数を持っています。 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 

だから私も、私はループ内のすべてのデータフレームに列を追加する方法を知らない

  1. を把握することはできません2つの問題を抱えています。だから私は、これはので、この例では、それはMMM米国株式と呼ばれているが、次回はそれは列と呼ばれます(たえず変化df['Stock Name 1']ある=後all_dfs[i].['ADD COLUMN NAME'] = df['Stock Name 1'].pct_change(1) * 100

  2. 第二部のような何かをしなければならないでしょう第二データフレームのヘッダ - それはIBM米国株式ことができる)、各データフレームは、別の名前を持っているように、私はループ内で適切に

をそれを呼び出す方法を知らない私は/のpythonに新しいです私がこれについて間違った方法を考えているならば、よりよい解決策があるかどうか私に知らせてください。

答えて

0

alldfsの長さを通してループ内の各要素をインデックスで参照することを検討してください。最初の新しい列に対して、2(第3列)のその列位置によって在庫列を選択する.ix演算子を使用:

for i in range(len(alldfs)): 
    dfList[i].is_copy = False # TURNS OFF SettingWithCopyWarning 

    dfList[i]['P_CHG1D'] = dfList[i].ix[:, 2].pct_change(1) * 100 
    dfList[i]['PCHG_SIG'] = dfList[i]['P_CHG1D'] > 3 
    dfList[i]['PCHG_SIG_VAL'] = dfList[i]['PCHG_SIG'].map({True:1,False:0}) 
+0

これが動作しなく はTypeError次のようにエラーを提供し:サポートされていないオペランドタイプ(複数可)/ : 'str'と 'float' これは何を意味するのか>> >>しかし、エラーがあってもデータフレームは正しい情報でコンパイルされます。だから私はこれが私に何を伝えているのか分からない –

+0

*在庫*各dfの3番目または2番目の列ですか?あなたの投稿、データごとに、私は株式が3列目であると仮定しています。しかし、これは、セパレータ '/'が誤って表示されるため、* Date *が使用されていることを示唆しています。たぶん、いくつかのdfsは* Date *を3番目の列として持つでしょうか? 'print(i)'を追加すると、リスト内のどのdfが問題かを調べることができます。 – Parfait

関連する問題